golang
中常常须要格式化工夫和日期来满足不同的业务需要, 上面总结格式化工夫日期中遇到的问题。
golang time 包 工夫日期格式化定义
go 的 time package 提供了 time.Format 函数,用来对工夫进行格式化输入; 相似的还有 time.Parse 用来解析字符串类型的工夫到 time.Time。这是两个互逆的函数。
上面看 golang
中time
包对于工夫的具体定义
- 月份 1,01,Jan,January
- 日 2,02,_2
- 时 3,03,15,PM,pm,AM,am
- 分 4,04
- 秒 5,05
- 年 06,2006
- 时区 -07,-0700,Z0700,Z07:00,-07:00,MST
- 周几 Mon,Monday
比方小时的示意(原定义是下午 3 时,也就是 15 时)
- 3 用 12 小时制示意,去掉前导 0
- 03 用 12 小时制示意,保留前导 0
- 15 用 24 小时制示意,保留前导 0
- 03pm 用 24 小时制 am/pm 示意上下午示意,保留前导 0
- 3pm 用 24 小时制 am/pm 示意上下午示意,去掉前导 0
又比方月份
- 1 数字示意月份,去掉前导 0
- 01 数字示意月份,保留前导 0
- Jan 缩写单词示意月份
- January 全单词示意月份
工夫日期格式化
- 本地当期工夫
fmt.Println(time.Now()) //2020-12-11 14:27:28.214512532 +0800 CST
- 工夫格式化
fmt.Println(time.Now().Format("3:04:05.000 PM Mon Jan")) // 2:27:05.702 PM Thu Jul
fmt.Println(time.Now().Format("2006-01-_2 3:04:05.000 PM Mon Jan")) // 2016-07-14 2:54:11.442 PM Thu Jul
fmt.Println(time.Now().Format("2006-01-02 15:04:05")) // 2016-07-14 14:54:11.442239513 +0800 CST
- 本地以后工夫戳(10 位)
fmt.Println(time.Now().Unix()) //1468479251
- 本地以后工夫戳(19 位)
fmt.Println(time.Now().UnixNano()) //1468480006774460462
- 工夫戳转工夫
fmt.Println(time.Unix(1389058332, 0).Format("2006-01-02 15:04:05")) //2014-01-07 09:32:12
- 工夫转工夫戳
fmt.Println(time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix())
- 工夫转换为 UTC 工夫和本地工夫(UTC: 零时区 +0000,China: 东八区 +0800)
dateStr := "2016-07-14 14:24:51"
timestamp1, _ := time.Parse("2006-01-02 15:04:05", dateStr)
timestamp2, _ := time.ParseInLocation("2006-01-02 15:04:05", dateStr, time.Local)
fmt.Println(timestamp1, timestamp2) //2016-07-14 14:24:51 +0000 UTC 2016-07-14 14:24:51 +0800 CST
fmt.Println(timestamp1.Unix(), timestamp2.Unix()) //1468506291 1468477491
now := time.Now()
year, mon, day := now.UTC().Date()
hour, min, sec := now.UTC().Clock()
zone, _ := now.UTC().Zone()
fmt.Printf("UTC 工夫是 %d-%d-%d %02d:%02d:%02d %sn",
year, mon, day, hour, min, sec, zone) // UTC 工夫是 2016-7-14 07:06:46 UTC
year, mon, day = now.Date()
hour, min, sec = now.Clock()
zone, _ = now.Zone()
fmt.Printf("本地工夫是 %d-%d-%d %02d:%02d:%02d %sn",
year, mon, day, hour, min, sec, zone) // 本地工夫是 2016-7-14 15:06:46 CST