我正在尝试解析在电子邮件标头中收到的日期。最近我被困在这个Thu, 7 Aug 2014 14:03:05 +0200 (Mitteleuropäische Sommerzeit)
上。我应该使用什么样的布局? Mon, 02 Jan 2006 15:04:05 -0700 (MST)
没有做到这一点。
我也尝试了下面的解决方法,但它仍然无效。我不确定为什么Mitt ......没有被替换。
if strings.Contains(d, "Mitteleuropäische Sommerzeit") {
d = strings.Replace(d, "Mitteleuropäische Sommerzeit", "CEST", 1)
}
答案 0 :(得分:2)
Mitteleuropäische Sommerzeit
部分确实无法识别time
部分。但是当你用CEST
替换它时,它的效果非常好:
var d = "Thu, 7 Aug 2014 14:03:05 +0200 (Mitteleuropäische Sommerzeit)"
_, err := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700 (MST)", d)
if err != nil {
fmt.Println(err) // There is indeed an error
}
d = strings.Replace(d, "Mitteleuropäische Sommerzeit", "CEST", 1)
t, err := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700 (MST)", d)
if err != nil {
fmt.Println(err) // No error this time
}
fmt.Println(t) // 2014-08-07 14:03:05 +0200 CEST
不要忘记在布局中写_2
而不是2
,这样也可以解析带有两个数字的日子。
答案 1 :(得分:1)
当您已经知道正确的数字偏移时,尝试解析带括号的时区名称是多余的:
Thu, 7 Aug 2014 14:03:05 +0200 (Mitteleuropäische Sommerzeit)
与
同样具体Thu, 7 Aug 2014 14:03:05 +0200
您从第一个表示中获得的唯一附加信息是,发送电子邮件的是夏天,电子邮件作者来自的地区是欧洲中部(字面意思是#34;中欧)夏季"。)
然而,与第二个字符串相比,这不会影响time.Time
值的表示,因为夏令时调整已经反映在数字时区表示+0200
中,这将是{冬天{1}}。
换句话说,在这种情况下,您可以忽略拼写出的时区规范。