轻松玩转Go语言时间和日期处理
时间的基础:理解Go的时间概念
在Go语言中,时间是一个64位整数,表示自Unix纪元(1970年1月1日00:00:00 UTC)以来的纳秒数。这个简单的设计使得Go的时间处理既高效又精确。
time包为我们提供了一个数据类型time.Time(作为值使用)以及显示和测量时间和日期的功能函数。
让我们先从最基本的概念开始:
- Time:代表一个具体的时间点
- Duration:表示两个时间点之间经过的时间,以纳秒为单位
- Location:处理时区相关操作
获取当前时间:你的第一个时间操作
在Go中获取当前时间非常简单,只需要调用time.Now()函数:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("当前时间:", now)
}
运行这段代码,你会看到类似这样的输出:2024-10-31 15:04:05.123456 +0800 CST m=+0.000123456
时间的格式化:让时间说人话
直接打印Time类型的数据虽然信息全面,但往往不是我们需要的格式。这时,时间格式化就派上用场了。
Go独特的格式化方式
与大多数编程语言使用YYYY-MM-DD等约定俗成的格式化字符不同,Go采用了一种独特而直观的方式——使用参考时间进行格式化。
Go的文档中这样说明:func (t Time) Format(layout string) string可以根据一个格式化字符串来将一个时间t转换为相应格式的字符串。
关键点:Go使用一个特定的参考时间(2006年1月2日15点04分05秒)来定义格式字符串。
这听起来有点奇怪,但看个例子你就会明白:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
// 预定义的格式
fmt.Println("RFC822格式:", now.Format(time.RFC822)) // 21 Dec 11 0852 UTC
// 自定义格式
fmt.Println("自定义格式1:", now.Format("2006-01-02 15:04:05"))
fmt.Println("自定义格式2:", now.Format("2006年01月02日 15时04分05秒"))
fmt.Println("自定义格式3:", now.Format("15:04:05 2006/01/02"))
}
常用的格式字符:

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



