包含的库中是否有库或函数可以将 RFC 时间戳转换为 Unix 时间(或我可以随后格式化为 Unix 时间的其他格式?)
例如,我想将此 Tue Sep 16 21:58:58 +0000 2014
更改为 Unix 时间戳。
最佳答案
例如,
package main
import (
"fmt"
"time"
)
func main() {
s := "Tue Sep 16 21:58:58 +0000 2014"
const rfc2822 = "Mon Jan 02 15:04:05 -0700 2006"
t, err := time.Parse(rfc2822, s)
if err != nil {
fmt.Println(err)
return
}
u := t.Unix()
fmt.Println(u)
f := t.Format(time.UnixDate)
fmt.Println(f)
}
输出:
1410904738
Tue Sep 16 21:58:58 +0000 2014
引用资料:
RFC2822: 3.3. Date and Time Specification
注意:
有一个名为RubyDate
的包time
格式常量;这是用词不当。
Go 作者被 Go Issue 518 误导了,它声称 Ruby Time.now
输出 Tue Jan 12 02:52:59 -0800 2010
。然而,
#!/usr/bin/env ruby
print Time.now
print "\n"
输出:
2014-09-20 19:40:32 -0400
后来,该问题被修改为 Tue Jan 12 02:52:59 -0800 2010
是 Twitter API 使用的日期格式。一开始,在“失败的鲸鱼”时代,Twitter 使用 Ruby-on-Rails,这可能就是为什么他们认为它是 Ruby 日期格式的原因。
我没有在示例中使用 time.RubyDate
常量,因为它具有误导性。名为 rfc2822
的常量提供了更好的文档。
引用资料:
Go: Issue 518: time.Parse - numeric time zones and spacing
关于golang RFC2822转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953158/