[英]Error while using time.Parse when timezone and offset are together
我有以下代碼:
package main
import (
"fmt"
"time"
"log"
)
func main() {
date, err := time.Parse("Monday, 2 January 2006 15:04:05 PM MST-07:00" ,"Thursday, 17 August 2020 13:20:00 PM GMT+08:00")
if err != nil {
log.Fatal(err.Error())
}
fmt.Println(date)
}
它失敗並出現以下錯誤:
2009/11/10 23:00:00 解析時間“2020年8月17日星期四13:20:00 PM GMT+08:00”為“2006年1月2日星期一15:04:05 PM MST-07:00”:無法將“:00”解析為“-07:00”
但是如果我在布局示例和實際字符串中用空格將 MST-07:00 分隔為:“MST -07:00”,它就會成功。
我究竟做錯了什么?
GMT 時間由time.Parse
進行特殊處理。 值中 GMT 的有符號偏移量必須在 -23 到 +23 的范圍內(不包括零),並且可能不包括冒號。 布局應該只指定沒有偏移的MST
。
例如:
package main
import (
"fmt"
"log"
"time"
)
func main() {
for _, ts := range []string{
"Thursday, 17 August 2020 13:20:00 PM GMT",
"Thursday, 17 August 2020 13:20:00 PM GMT+2",
"Thursday, 17 August 2020 13:20:00 PM GMT-2",
} {
date, err := time.Parse("Monday, 2 January 2006 15:04:05 PM MST", ts)
if err != nil {
log.Fatal(err.Error())
}
fmt.Println(date)
}
}
產生輸出:
crow@mac:tp$ ./example
2020-08-17 13:20:00 +0000 GMT
2020-08-17 15:20:00 +0200 GMT+2
2020-08-17 11:20:00 -0200 GMT-2
不久前為此提出了一個問題,結果是(參考包含GMT+10:00
的示例時間字符串):
GMT 的特殊處理是其他事情所需要的,這使得很難知道 +10:00 是應該被視為時區的一部分還是應該單獨保留以匹配布局。
所以這個問題在沒有提出更改的情況下就結束了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.