68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package strftime
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// NOTE: declare private variable and iniitalize once in init(),
|
|
// and leave the Milliseconds() function as returning static content.
|
|
// This way, `go doc -all` does not show the contents of the
|
|
// milliseconds function
|
|
var milliseconds Appender
|
|
var microseconds Appender
|
|
var unixseconds Appender
|
|
|
|
func init() {
|
|
milliseconds = AppendFunc(func(b []byte, t time.Time) []byte {
|
|
millisecond := int(t.Nanosecond()) / int(time.Millisecond)
|
|
if millisecond < 100 {
|
|
b = append(b, '0')
|
|
}
|
|
if millisecond < 10 {
|
|
b = append(b, '0')
|
|
}
|
|
return append(b, strconv.Itoa(millisecond)...)
|
|
})
|
|
microseconds = AppendFunc(func(b []byte, t time.Time) []byte {
|
|
microsecond := int(t.Nanosecond()) / int(time.Microsecond)
|
|
if microsecond < 100000 {
|
|
b = append(b, '0')
|
|
}
|
|
if microsecond < 10000 {
|
|
b = append(b, '0')
|
|
}
|
|
if microsecond < 1000 {
|
|
b = append(b, '0')
|
|
}
|
|
if microsecond < 100 {
|
|
b = append(b, '0')
|
|
}
|
|
if microsecond < 10 {
|
|
b = append(b, '0')
|
|
}
|
|
return append(b, strconv.Itoa(microsecond)...)
|
|
})
|
|
unixseconds = AppendFunc(func(b []byte, t time.Time) []byte {
|
|
return append(b, strconv.FormatInt(t.Unix(), 10)...)
|
|
})
|
|
}
|
|
|
|
// Milliseconds returns the Appender suitable for creating a zero-padded,
|
|
// 3-digit millisecond textual representation.
|
|
func Milliseconds() Appender {
|
|
return milliseconds
|
|
}
|
|
|
|
// Microsecond returns the Appender suitable for creating a zero-padded,
|
|
// 6-digit microsecond textual representation.
|
|
func Microseconds() Appender {
|
|
return microseconds
|
|
}
|
|
|
|
// UnixSeconds returns the Appender suitable for creating
|
|
// unix timestamp textual representation.
|
|
func UnixSeconds() Appender {
|
|
return unixseconds
|
|
}
|