【问题标题】:Ruby and Golang time parsingRuby 和 Golang 时间解析
【发布时间】:2016-08-10 22:48:59
【问题描述】:

我了解如何使用 Golang 从字符串中解析时间。

目前,我在 Rails/ruby 中发出一个由 Go 处理的请求,其中我传入了一个时间参数。

这就是我在 Rails 中所做的事情

  resp = connection.get "url", {
    updated_at: updated_at
  }.compact

updated_atTime.now - 1.day

在 Go 中,这就是我在取出时间后解析时间的方式。

updatedAt, err := time.Parse("2006-01-02 15:04:05 -0700 MST", updatedAtVar)

如果时间看起来像,上述方法有效

2014-11-17 23:02:03 +0000 UTC

但 Ruby 吐出的时间看起来像

2016-08-10 22:29:51 +0000

其中,当解析结果时

0001-01-01 00:00:00 +0000 UTC

我可以将什么传递给我的参数,以便 go 正确解析时间?

【问题讨论】:

    标签: ruby-on-rails ruby go time


    【解决方案1】:

    the docs 中提供的格式字符串包含一些冗余信息(特别是 MST 和 -0700 传达相同的信息 - 以小时*100+分钟为单位的 UTC 偏移量)。

    所以,只需将“MST”从您的格式字符串中删除即可。

    【讨论】:

    • 啊,谢谢!我也想知道 - 如果我想在 Go 中获得 2014-11-17 23:02:03 +0000 UTC 怎么办?
    • 使用time.Format 以您想要的格式将您的时间安排为字符串,再次使用标记值Mon Jan 2 15:04:05 -0700 MST 2006(助记符:1/2 3:04:05 pm '06, -0700 )。所以对于这种情况:time.Format("2006-01-02 15:04:05 -0700 MST")
    • (我有点希望他们使用 2001-02-03 4:05:06 pm, -0700 MST 作为他们的助记符,但无论如何。)
    • 等等..那么我如何获得像2014-11-17 23:02:03 +0000 这样的时间?
    • 如果你想要一个time.Time 变量,其值代表2014-11-16 23:02:03 +0000,然后调用time.Parse("2006-01-02 15:04:05 -0700", "2014-11-16 23:02:03 +0000")。如果您已经在某些var t time.Time 中拥有它,并且您想以该格式将其打印为字符串,请调用t.Format("2006-01-02 15:04:05 -0700")
    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多