34 lines
797 B
Go
34 lines
797 B
Go
package util
|
|
|
|
import "time"
|
|
|
|
var (
|
|
shanghai = Location("Asia/Shanghai") // Shanghai *time.Location
|
|
hongkong = Location("Asia/Hong_Kong") // Hong Kong *time.Location
|
|
local = Location("Local") // Local *time.Location
|
|
utc = Location("UTC") // UTC *time.Location
|
|
)
|
|
|
|
// Location returns *time.Location by location name.
|
|
func Location(name string) *time.Location {
|
|
loc, err := time.LoadLocation(name)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return loc
|
|
}
|
|
|
|
// Shanghai returns Shanghai *time.Location.
|
|
func Shanghai() *time.Location {
|
|
return shanghai
|
|
}
|
|
|
|
// TimeNowUnixNano returns now unix nanosecond timestamp.
|
|
func TimeNowUnixNano(location ...*time.Location) int64 {
|
|
loc := Shanghai()
|
|
if len(location) != 0 {
|
|
loc = location[0]
|
|
}
|
|
return time.Now().In(loc).UnixNano()
|
|
}
|