2014-09-20 136 views
1

是否有在一个RFC时间戳转换为Unix时间所包括的库的存储库或功能(或另一种格式,然后我可以格式化为Unix时间?)golang RFC2822转换

例如,我想将此Tue Sep 16 21:58:58 +0000 2014更改为Unix时间戳。

回答

4

例如,

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 

参考文献:

Package time

RFC2822: 3.3. Date and Time Specification

注:

有一个包time格式常量名为RubyDate;这是一个误用。

The 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

Diff of format.go revision 0f80c5e80c0e

Twitter Search is Now 3x Faster

+2

这种形式好像是叫time.RubyDate – 2014-09-20 22:01:42

+0

@ NickCraig木业你能就此展开? golang'time'包中有'time.RubyDate'方法吗? – bvpx 2014-09-20 22:12:08

+0

@bvpx不是一种方法,而是一种时间格式,具有与上面相同的定义'RubyDate =“Mon Jan 02 15:04:05 -0700 2006”' – 2014-09-20 22:27:34