亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

鑒于 IANA 條目是已知的,我如何找到特定的日期偏移量(日光與標準)?

鑒于 IANA 條目是已知的,我如何找到特定的日期偏移量(日光與標準)?

Go
皈依舞 2022-06-01 18:22:49
我有一個以這種格式顯示的日期字符串列表,沒有任何時區或偏移信息:[   "2019-04-30T12:34:00.000",  // In 2019, DST started in March 10, 2019, so this should have the appropriate DST offset   "2017-11-20T13:45:00.000"   // In 2017, DST ended on November 5, 2017 so this should have the appropriate standard time offset]我知道創建這些日期和時間的 IANA 區域(例如,America/New_York),但我無法弄清楚如何使用 go 和time包在給定此信息的情況下動態生成適當的偏移量。我想過以下幾點:將硬編碼值附加到日期字符串的末尾(即"2019-04-30T12:34:00.000" + "-04:00)編寫自定義邏輯以確定日期是否在標準時間或夏令時的邊界內但是,這些解決方案僅適用于某些日期,否則邏輯會變得非常復雜。
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

我能夠弄清楚


package main


import (

    "log"

    "time"

)


func main() {

    Chicago, _ := time.LoadLocation("America/Chicago")


    t := time.Date(2019, time.March, 1, 12, 30, 0, 0, Chicago)

    log.Print(t)       // 2019-03-01 12:30:00 -0600 CST

    log.Print(t.UTC()) // 2019-03-01 18:30:00 +0000 UTC

    t = time.Date(2019, time.November, 2, 12, 30, 0, 0, Chicago)

    log.Print(t)       // 2019-11-02 12:30:00 -0500 CDT

    log.Print(t.UTC()) // 2019-11-02 17:30:00 +0000 UTC

}

去游樂場@https ://play.golang.org/p/nP28y9jSDAk


通過利用自定義布局和time.LoadLocation的更清潔的解決方案


package main


import (

    "fmt"

    "time"


)


func main() {

    Chicago, _ := time.LoadLocation("America/Chicago")


    cdt, _ := time.ParseInLocation("2006-01-02T15:04:05.999999", "2019-04-30T12:34:00.000", Chicago)



    fmt.Println(cdt)

    fmt.Println(cdt.UTC())


    cst, _ := time.ParseInLocation("2006-01-02T15:04:05.999999", "2017-11-20T13:45:00.000", Chicago)


    fmt.Println(cst)

    fmt.Println(cst.UTC())

}

去游樂場@https ://play.golang.org/p/3Ai4qVz0af5


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號