自建淘宝客APP网站模板,如何网站建设团队,电子商务与网站建设,山西中色十二冶金建设有限公司网站在日常开发过程中#xff0c;会频繁遇到对时间进行操作的场景#xff0c;使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包#xff0c;本文讲解一下 time 包中的函数。
func Now() Time
返回当前的系统时间。
package mai…在日常开发过程中会频繁遇到对时间进行操作的场景使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包本文讲解一下 time 包中的函数。
func Now() Time
返回当前的系统时间。
package mainimport (fmttime
)func main() {now : time.Now() fmt.Println(now.Unix())
}
func Parse(layout, value string) (Time, error)
将字符串解析为时间类型并返回对应的 Time 对象。layout 参数是表示时间的格式例如2006-01-02 15:04:05表示年、月、日、时、分、秒的格式。
package mainimport (fmttime
)func main() {layout : 2006-01-02 15:04:05 str : 2023-07-19 12:34:56 t, _ : time.Parse(layout, str) fmt.Println(t)
}
func ParseDuration(s string) (Duration, error)
用于将字符串解析为 Duration 类型。
package mainimport (fmttime
)func main() {durationStr : 2h45mduration, err : time.ParseDuration(durationStr)if err ! nil {fmt.Println(解析持续时间错误:, err)return}fmt.Printf(解析后的持续时间为%v\n, duration)
}
func ParseInLocation(layout, value string, loc *Location) (Time, error)
用于将字符串解析为 Time 类型并在指定的时区中解析时间。
package mainimport (fmttime
)func main() {location : time.FixedZone(CustomZone, 2*60*60) // 创建一个偏移量为2小时的固定时区timeString : 2023-07-18 14:30:00 // 要解析的字符串t, err : time.ParseInLocation(2006-01-02 15:04:05, timeString, location)if err ! nil {fmt.Println(解析时间错误:, err)return}fmt.Printf(解析后的时间为%v\n, t)
}
func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
根据给定的年、月、日、时、分、秒和纳秒创建一个 Time 对象loc 参数表示时区。
package mainimport (fmttime
)func main() {t : time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) fmt.Println(t)
}
func Since(t Time) Duration
返回从当前时间到 t 之间的时间差以纳秒为单位。
package mainimport (fmttime
)func main() {t : time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) duration : time.Since(t) fmt.Println(duration)
}
func Until(t Time) Duration
返回从 t 到当前时间之间的时间差以纳秒为单位。
package mainimport (fmttime
)func main() {t : time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) duration : time.Until(t) fmt.Println(duration)
}
func After(d Duration) -chan Time
用于创建一个通道将在指定的时间间隔后向通道发送一个 time.Time 类型的值。
package mainimport (fmttime
)func main() {// 创建一个将在5秒后发送值的通道timer : time.After(5 * time.Second)// 等待通道发送值fmt.Println(-timer)
}
func AfterFunc(d Duration, f func()) *Timer
用于创建一个定时器并在指定的时间间隔后执行一个函数。
package mainimport (fmttime
)func main() {// 创建一个将在5秒后触发的定时器timer : time.AfterFunc(5*time.Second, func() {fmt.Println(路多辛的博客)})// 停止定时器time.Sleep(10 * time.Second)timer.Stop()// 输出路多辛的博客fmt.Println(Program ended)
}
func Unix(sec int64, nsec int64) Time
用于将 Unix 时间戳转换为时间类型。
package mainimport (fmttime
)func main() {// 定义一个Unix时间戳unixTime : int64(1691587957)// 使用time.Unix函数将Unix时间戳转换为时间类型t : time.Unix(unixTime, 0)// 打印结果fmt.Println(t)
}
func UnixMilli(msec int64) Time
用于将毫秒时间戳转换为时间类型。
package mainimport (fmttime
)func main() {t : time.UnixMilli(1691587957000)// 打印结果fmt.Println(t)
}
func UnixMicro(usec int64) Time
用于将微秒时间戳转换为时间类型。
package mainimport (fmttime
)func main() {t : time.UnixMilli(1691587957000000)// 打印结果fmt.Println(t)
}
func Tick(d Duration) -chan Time
用于创建一个定时器该定时器每隔一定的时间间隔就会向通道发送当前的时间。
package mainimport (fmttime
)func main() {// 创建一个每隔1秒进行一次打印的定时器ticker : time.Tick(1 * time.Second)for {-ticker // 等待定时器的发送fmt.Println(这是ticker的打印)}
}
func LoadLocation(name string) (*Location, error)
用于加载并返回一个特定的时区。
package mainimport (fmttime
)func main() {// 加载Asia/Shanghai时区location, err : time.LoadLocation(Asia/Shanghai)if err ! nil {fmt.Println(无法加载时区:, err)return}// 使用该时区创建一个时间对象t : time.Now().In(location)fmt.Println(当前时间:, t)
}
func LoadLocationFromTZData(name string, data []byte) (*Location, error)
用于从 TZ 数据中加载并返回一个时区。
package mainimport (fmttime
)func main() {// 加载Asia/Shanghai时区location, err : time.LoadLocationFromTZData(Asia/Shanghai)if err ! nil {fmt.Println(无法加载时区:, err)return}// 使用该时区创建一个时间对象t : time.Now().In(location)fmt.Println(当前时间:, t)
}
func FixedZone(name string, offset int) *Location
用于创建一个具有固定偏移量的时区。
package mainimport (fmttime
)func main() {// 创建一个偏移量为2小时的固定时区location : time.FixedZone(CustomZone, 2*60*60)// 使用该时区创建一个时间对象t : time.Now().In(location)fmt.Println(当前时间:, t)
}
func NewTicker(d Duration) *Ticker
用于创建一个新的 Ticker 对象该对象可以在指定的时间间隔重复发送 Time 值。
package mainimport (fmttime
)func main() {// 创建一个每秒发送一次的 Ticker 对象ticker : time.NewTicker(1 * time.Second)defer ticker.Stop()for {select {case -ticker.C:fmt.Println(打印一次路多辛的博客)}}
}
func NewTimer(d Duration) *Timer
用于创建一个新的 Timer 对象该对象可以在指定的时间间隔后发送一个 Time 类型的值。
package mainimport (fmttime
)func main() {// 创建一个定时器在2秒后发送一个时间值timer : time.NewTimer(2 * time.Second)defer timer.Stop()// 使用定时器发送的时间值处理函数timerHandler : func() {fmt.Println(收到时间值)}// 在定时器发送时间值之前执行处理函数go timerHandler()// 等待定时器发送时间值select {case -timer.C:fmt.Println(定时器已发送时间值)}
}
func Sleep(d Duration)
让当前的 goroutine 休眠指定的时间。
package mainimport (fmttime
)func main() {fmt.Println(开始休眠)time.Sleep(2 * time.Second)fmt.Println(休眠结束)
}