Go语言时间处理
· 阅读需 2 分钟
时间格式化基础
自定义格式输出
Go使用特定时间戳(2006-01-02 15:04:05)作为布局字符串:
t := time.Now()
fmt.Println(t.Format("2006-01-02 15:04:05")) // 2023-10-08 14:30:45
fmt.Println(t.Format("2006/01/02 15:04:05")) // 2023/10/08 14:30:45
fmt.Println(t.Format("2006.01.02 15:04:05")) // 2023.10.08 14:30:45
fmt.Println(t.Format("2006年01月02日 15时04分05秒")) // 2023年10月08日 14时30分45秒
预定义标准格式
Go内置多种标准格式,直接使用time包常量:
fmt.Println(time.Now().Format(time.RFC3339)) // 2023-10-08T14:30:45+08:00
fmt.Println(time.Now().Format(time.RFC1123)) // Mon, 08 Oct 2023 14:30:45 CST
字符串解析实践
yyyyMM格式解析
处理无分隔符的日期字符串时需注意布局字符串格式:
func parseYearMonth(str string) (int, time.Month) {
t, err := time.Parse("200601", str) // 布局字符串必须使用"200601"
if err != nil {
log.Fatal("解析失败:", err)
}
return t.Year(), t.Month()
}
// 使用示例
year, month := parseYearMonth("202310")
fmt.Printf("%d年%s月", year, month) // 2023年October月