一、基础概念
在golang中,时间在代码中使用time.Time类型表示,它包含了年、月、日、时、分、秒、纳秒、时区等信息。对于这些信息的格式化,golang提供了fmt包和time包两个包的支持。
二、fmt包时间格式化
在fmt包中,时间格式化使用的是go语言自带的格式化字符串,例如:
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
其中,"2006-01-02 15:04:05"代表了go语言的诞生时间:2006年1月2日15点04分05秒,除此之外,还可以使用其他的格式化字符串,例如:
fmt.Println(time.Now().Format("2006/01/02"))
使用“/”分割时间,并且年、月、日的顺序不同于前面的例子。
在实际使用中,fmt包的时间格式化常用于控制台输出等简单场景。
三、time包时间格式化
在time包中,时间格式化使用的是time.Time类型的Format函数,例如:
t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05"))
与fmt包相比,time包的时间格式化更加灵活,支持更多的结构体和函数。下面是一些常用的时间格式化方法:
四、time包时间常用格式化方法
1. 时间戳转为time.Time类型
Unix函数可以将时间戳转为time.Time类型:
t := time.Unix(123456789, 0) fmt.Println(t)
2. time.Time类型取年、月、日等具体时间
time.Time类型包含了具体的时间信息,可以通过Year、Month、Day等函数获取对应的时间信息:
t := time.Now() fmt.Println(t.Year()) fmt.Println(t.Month()) fmt.Println(t.Day())
3. 时间加减运算
time.Time类型的Add和Sub函数可以进行时间的加减运算:
t := time.Now() fmt.Println(t) fmt.Println(t.Add(24 * time.Hour)) // 加一天 fmt.Println(t.Sub(time.Hour)) // 减一小时 fmt.Println(t.AddDate(1, 0, 0)) // 加一年
4. 时间比较
time.Time类型的Before和After函数可以进行时间的比较:
t1 := time.Now() t2 := time.Now().Add(24 * time.Hour) if t1.Before(t2) { fmt.Println("t1 before t2") } if t2.After(t1) { fmt.Println("t2 after t1") }
5. 时间格式化
time.Time类型的Format函数可以将时间格式化为字符串:
t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05")) fmt.Println(t.Format("2006/01/02"))
五、总结
golang的时间格式化支持非常灵活,可以通过fmt包和time包来实现不同的时间格式化需求。开发者在实践中可以根据具体需求灵活选择,一定要注意格式化字符串的正确性。