go语言之Time常用操作讲解 | 青训营

258 阅读2分钟

time包介绍

Golang的time包是用于处理时间和日期的核心包,为我们提供了许多功能来操作和处理时间,例如获取当前时间、格式化时间、定时任务、计算时间间隔等等操作。

时间类型**(time.Time)** :

time.Time表示时间的结构体,它包含了年、月、日、时、分、秒等信息,实现了很多不同操作的方法。例如我们可以使用使用time.Now()函数获取当前时间。

now_time := time.Now()
fmt.Println("Now Time:", now_time)

计算时间差

在编写Go程序时,我们可能需要在一段时间后执行某个任务,或者需要在特定的时间点之前完成某项操作。通过计算时间差,我们可以确定任务应该在何时开始,或者可以检查是否已经超过了某个操作的截止时间。通过以下操作,可以很方便的计算时间差。

t0 := time.Now()

	fmt.Println(t0.Unix()) //当前的时间戳精确到秒

	//计算时差
	//time - time = Ruration
	time.Sleep(50 * time.Millisecond)
	t1 := time.Now()

	diff := t1.Sub(t0)
	//打印时间差
	fmt.Println(diff.Milliseconds())

时间格式化

时间格式化允许我们将时间对象转换为易于阅读和理解的字符串表示形式,以便于在前端界面显示或者记录日志。

go语言中,有一个固定的日期和时间来格式化时间戳,可以通过更改-来实现你想要的格式化结果。

const (
	DATE = "2006-01-02" //YYYY-mm-dd
	TIME = "2006-01-02 15:04:05" 
)
// DATE= 2006年01月02日
	fmt.Println(t0.Format(DATE)) //日期
	//out=>2023年08月29日

定时任务

定时任务可以用于监控服务器性能、资源利用率和日志文件。它们可以自动触发警报或错误修复操作,以确保系统的稳定性和可靠性,还可以用于执行自动化操作,如备份数据、清理临时文件、定时发送电子邮件通知等。这有助于减轻人工操作的负担,确保重复性任务按计划自动完成。在go语言中我们可以使用time.After()time.Tick()函数来实现定时任务。例如

after := time.After(2 * time.Second) // 2秒后触发
ticker := time.Tick(1 * time.Second) // 每秒触发一次

<-after
for tick := range ticker {
    fmt.Println("Tick at", tick)
}

时间间隔计算:

我们可以使用time.Since()函数来计算时间间隔。例如:

start_time := time.Now()
time.Sleep(2 * time.Second) // 模拟等待2秒
elapsed_time := time.Since(start_time)
fmt.Println("Elapsed Time:", elapsed_time)

时间操作:

time.Time类型还支持一系列的加减操作,用于进行时间的计算。例如:

future_time := current_time.Add(3 * time.Hour) // 当前时间加3小时
past_time := current_time.Add(-2 * time.Day)   // 当前时间减2天

总结

以上就是Time的一些基本操作,总之,time包是Go语言中处理时间和日期的重要工具,为我们在各种应用场景下处理时间提供了丰富的功能和便利。