在下面的示例中,無論您為 parseAndPrint 函數選擇的時區如何,結果始終為“[date] 05:00:00 +0000 UTC”。這段代碼有什么問題?時間應根據您選擇的時區而變化。(Go Playground 服務器顯然是在 UTC 時區配置的)。http://play.golang.org/p/wP207BWYEdpackage mainimport ( "fmt" "time")func main() { now := time.Now() parseAndPrint(now, "BRT") parseAndPrint(now, "EDT") parseAndPrint(now, "UTC")}func parseAndPrint(now time.Time, timezone string) { test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone)) if err != nil { fmt.Println(err) return } test = time.Date( now.Year(), now.Month(), now.Day(), test.Hour(), test.Minute(), test.Second(), test.Nanosecond(), test.Location(), ) fmt.Println(test.UTC())}
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
當您解析時間時,您是在當前位置解析它,只要這是您所期望的就可以了,并且時區縮寫在您所在的位置是已知的。
如果您可以放棄時區,那么將您處理的所有時間都標準化為 UTC 會容易得多。
下一個最簡單的方法是處理帶有顯式偏移量的所有內容,例如-05:00
.
如果要處理源自其他時區的時間,則需要使用time.Location
. 您可以使用 加載本地時區數據庫中的位置time.LoadLocation
,并使用 解析時間time.ParseInLocation
。
- 2 回答
- 0 關注
- 243 瀏覽
添加回答
舉報
0/150
提交
取消