golang RFC2822转换

标签 go timestamp date-conversion

包含的库中是否有库或函数可以将 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

引用资料:

Package time

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

Diff of format.go revision 0f80c5e80c0e

Twitter Search is Now 3x Faster

关于golang RFC2822转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953158/

相关文章:

performance - 为什么我的 GAE 应用程序提供静态文件的延迟如此之高?

linux - docker容器在写入挂载目录中的文件时不断增加内存使用量

go - 如何停止golang中的周期函数

go - 如何查询具有部分键值的表

mongodb - 在蒙戈获得一个月的第一天。将 'yyyy-mm-dd-hh-mm-ss.SSS' 转换为 'yyyy-mm-01-00-00-00.000' 的时间戳

从 1970-01-01 查找毫秒数的 Javascript 方法?

iPhone - 从应用程序获取可靠的时间戳并将其存储到外部 mysql 数据库中

java - java中将日期和时间转换为其他时区

Scala 字符串到 Java Util 日期转换

sql-server - 处理 varchar 日期转换中超出范围的值