根據字符串創建一個基於當地時區的時間類型
通過Date.now
方法獲取的是基於當地時區的時間
now := Date.now()
結果是2019-06-27 10:28:31.282649389 +0800 CST m=+0.000347190
,注意是帶了當地時區+08的
通過time.Parse
將字符串轉化爲時間類型,是UTC時間
before, _:= time.Parse("2006-01-02 15:04:05", "2019-06-26 22:06:00")
結果是 2019-06-26 22:06:00 +0000 UTC
其實我想做的是,將2019-06-26 22:06:00
轉化爲東八區的時間,應該用time.ParseInLocation
方法
local, _:=time.ParseInLocation("2006-01-02 15:04:05", "2019-06-26 20:00:00", time.Local)
// 2019-06-26 22:06:00 +0800 CST
將當地時區轉化爲UTC時間
// local根據上一步創建的是 2019-06-26 22:06:00 +0800 CST
utcLocal :=local.UTC()
結果是2019-06-26 14:06:00 +0000 UTC
,轉化爲UTC時間自動-8小時。
將UTC時間轉化爲當地時間
local2 :=utcLocal.Local()
結果是2019-06-26 22:06:00 +0800 CST
golang還提供了更多的格式化參考格式提供選擇 const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" Kitchen = "3:04PM" // Handy time stamps. Stamp = "Jan _2 15:04:05" StampMilli = "Jan _2 15:04:05.000" StampMicro = "Jan _2 15:04:05.000000" StampNano = "Jan _2 15:04:05.000000000" )