Go:time.Format:如何理解' 2006-01-02'布局?

时间:2017-02-14 03:21:09

标签: go time

考虑到时间变量,我想打印年,月和日。 从文档中,似乎可以使用任何布局。例如,我看不出布局2006-01-02,2006-10-10,1999-02-02之间的区别。

但是,只有布局2006-01-02会返回我期望的内容。 我在哪里可以找到关于' 2006',' 01',' 02'的含义的文档。在布局?

我在这里玩了不同的布局:go playground: testing layouts

3 个答案:

答案 0 :(得分:6)

Mon Jan 2 15:04:05 -0700 MST 2006是参考时间,这意味着布局需要使用该确切日期。有more information here,但基本上通过为日期时间的每个部分使用唯一值,它能够分辨出每个部分(年,月等)的实际位置。

Corrected go playground

答案 1 :(得分:4)

跟进杰克的信息,详见examples

// The layout string used by the Parse function and Format method
// shows by example how the reference time should be represented.
// We stress that one must show how the reference time is formatted,
// not a time of the user's choosing. Thus each layout string is a
// representation of the time stamp,
//  Jan 2 15:04:05 2006 MST
// An easy way to remember this value is that it holds, when presented
// in this order, the values (lined up with the elements above):
//    1 2  3  4  5    6  -7

此参考时间允许我们澄清是否应该将01-02-17解析为2017年1月2日或1月1日

答案 2 :(得分:1)

Go的时间格式独特,与其他语言的格式不同。 Go使用的参考日期20060102150405似乎没有意义,但实际上有一定的原因,而不是使用常规格式来打印日期,因为Posix date命令中的参考日期1 2 3 4 5 6

Mon Jan 2 15:04:05 -0700 MST 2006
0   1   2  3  4  5              6

在Go中,布局字符串为:

Jan 2 15:04:05 2006 MST
1   2  3  4  5    6  -7

选中this