【问题标题】:Date parsing in GoGo 中的日期解析
【发布时间】:2011-07-05 22:38:16
【问题描述】:

我正在尝试解析 tar 生成的时间戳,例如“2011-01-19 22:15”,但无法计算出 time.Parse 的时髦 API。

以下产生'解析时间“2011-01-19 22:15”:超出范围的月份'

package main
import (
    "fmt"
    "time"
    )

func main () {
    var time , error = time.Parse("2011-01-19 22:15","2011-01-19 22:15")
    if error != nil {
        fmt.Println(error.String())
        return
        }
    fmt.Println(time)
    }

【问题讨论】:

  • 我不回答是因为 peterSO 完美地回答了,但我想明确指出,您并不是唯一一个发现这个以美国为中心的日期 API 的时髦人士。我正在考虑制作一个工具来帮助从规范化的字符串中生成那些特定的解析字符串(我想是 ISO 8601)。
  • 时间包提供标准格式:golang.org/pkg/time/#pkg-constants

标签: date go


【解决方案1】:

按照 Go time package 文档中的说明进行操作。

使用的标准时间 在布局中是:

2006 年 1 月 2 日星期一 15:04:05 MST(MST 是 GMT-0700)

这是 Unix 时间1136243045。 (思考 其中01/02 03:04:05PM '06 -0700。) 要定义自己的格式,请写下 标准时间是什么样的 格式化你的方式。

例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    t, err := time.Parse("2006-01-02 15:04", "2011-01-19 22:15")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(time.SecondsToUTC(t.Seconds()))
}

Output: Wed Jan 19 22:15:00 UTC 2011

【讨论】:

  • 请注意,模板不能只使用任何年份或月份,它必须是标准模板中的一个。
猜你喜欢
  • 2020-02-14
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多