Go 的 time.Format(layout string) 引用时间有什么意义?

What is the significance of Go's time.Format(layout string) reference time?

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

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

这个具体时间不可能是完全随机选择的吧?

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

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

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

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

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

所以根据文档:

Since MST is GMT-0700, the reference time can be thought of as 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 将标记此字符串并分析每个单词。

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

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