golang 格式化時間小結

golang 中常常須要格式化時間和日期來知足不一樣的業務需求,下面總結格式化時間日期中遇到的問題。golang

golang time包 時間日期格式化定義

go 的time package 提供了time.Format函數,用來對時間進行格式化輸出;相似的還有time.Parse用來解析字符串類型的時間到time.Time。這是兩個互逆的函數。
下面看golangtime包對於時間的詳細定義函數

  • 月份 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時)code

  • 3 用12小時製表示,去掉前導0
  • 03 用12小時製表示,保留前導0
  • 15 用24小時製表示,保留前導0
  • 03pm 用24小時制am/pm表示上下午表示,保留前導0
  • 3pm 用24小時制am/pm表示上下午表示,去掉前導0

又好比月份orm

  • 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
相關文章
相關標籤/搜索