37 lines
927 B
Go
37 lines
927 B
Go
package clock
|
|
|
|
import "time"
|
|
|
|
// StorageTimezone is the only timezone used for persisted timestamps.
|
|
const StorageTimezone = "UTC"
|
|
|
|
// Now returns the current instant in UTC.
|
|
func Now() time.Time {
|
|
return time.Now().UTC()
|
|
}
|
|
|
|
// NowUnixNano returns the current instant as UTC unix nanoseconds.
|
|
func NowUnixNano() int64 {
|
|
return Now().UnixNano()
|
|
}
|
|
|
|
// UnixNano converts an instant to UTC unix nanoseconds.
|
|
func UnixNano(t time.Time) int64 {
|
|
return t.UTC().UnixNano()
|
|
}
|
|
|
|
// FromUnixNano parses UTC unix nanoseconds.
|
|
func FromUnixNano(nano int64) time.Time {
|
|
return time.Unix(0, nano).UTC()
|
|
}
|
|
|
|
// AddSecondsFromNow returns UTC unix nanoseconds after the given seconds.
|
|
func AddSecondsFromNow(seconds int) int64 {
|
|
return Now().Add(time.Duration(seconds) * time.Second).UnixNano()
|
|
}
|
|
|
|
// SecondsToNanos converts whole seconds to nanoseconds.
|
|
func SecondsToNanos(seconds int) int64 {
|
|
return int64(seconds) * int64(time.Second)
|
|
}
|