为了账号安全,请及时绑定邮箱和手机立即绑定

使用 time.Parse 时出错,当时区和偏移量在一起时

使用 time.Parse 时出错,当时区和偏移量在一起时

Go
紫衣仙女 2022-07-11 17:20:59
我有以下代码:package mainimport (    "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”,则它会成功。我究竟做错了什么?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

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 是否应该被视为时区的一部分,还是应该单独保留以匹配布局。


所以这个问题在没有提出修改的情况下就关闭了。


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号