【问题标题】:What is the significance of Go's time.Format(layout string) reference time?Go 的 time.Format(layout string) 参考时间有什么意义?
【发布时间】:2015-01-22 11:18:54
【问题描述】:

Go的time.Format(layout string)参考时间有什么意义,即:

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

这个特定时间不可能完全随机选择的,对吧?

来源:http://golang.org/pkg/time/#Time.Format

【问题讨论】:

  • 提示,尝试使用每个部分的数值
  • 哈哈哈希望我看得更近一点

标签: go


【解决方案1】:

日期的每一部分都用作索引:

Jan        -> 1      -> Month
2          -> 2      -> Day-of-Month
15 = 3PM   -> 15/3   -> hour
04         -> 4      -> minute
05         -> 5      -> second
2006       -> 6      -> year
-0700      -> 7      -> time-zone

所以根据文档:

由于 MST 为 GMT-0700,因此可以将参考时间视为 01/02 03:04:05PM '06 -0700

这使得time.Format 方法可以轻松解析在视觉上与所需结果相同的人类可读日期格式规范。

将此与 strftime C 函数进行比较,该函数使用难以记忆的格式字符串,例如 "%a, %d %b %y %T %z",它表示符合 RFC 822 的日期格式。

Go 等价物是:"Mon, 02 Jan 06 15:04 MST"

time.Format 将标记这个字符串并分析每个单词。

  • 星期一被认为是星期一,所以这是工作日的名称
  • 逗号保持不变
  • 02 被识别为整数值 2,表示索引中的某一天
  • Jan 是一月月份的已知英文缩写,因此用于月份部分
  • 06 是 6 所以今年部分
  • 15 相当于 3,代表小时
  • ':' 字符保持不变
  • 04 是 4,因此是分钟
  • MST 被逐字解释

查看https://github.com/golang/go/blob/go1.15/src/time/format.go#L151了解确切的算法。

【讨论】:

    【解决方案2】:

    在美国日期格式中,它是Mon, 1/2 03:04:05 PM 2006 -0700

    1、2、3、4、5、6、7。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2011-01-07
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2010-12-24
      相关资源
      最近更新 更多