Go 如何将当前时间格式化为YYYY-MM-DDTHH:MM:SSZ

Go 如何将当前时间格式化为YYYY-MM-DDTHH:MM:SSZ,go,datetime-format,Go,Datetime Format,以前从未尝试过Go,现在正在做一个小项目。任务之一是获取当前系统时间并以YYYY-MM-DDT00:00:00Z格式表示。我相信Z表示时间是以UTC格式表示的,但当我查看db时,所有时间戳都是这样的,即2011-11-22T15:22:10Z 那么,如何在Go中设置这样的格式 更新 我能够使用以下代码格式化它 t := time.Now() fmt.Println(t.Format("2006-01-02T15:04:05Z")) 现在的问题仍然是,Z在这里意味着什么。我应该得到UTC时间吗

以前从未尝试过Go,现在正在做一个小项目。任务之一是获取当前系统时间并以YYYY-MM-DDT00:00:00Z格式表示。我相信Z表示时间是以UTC格式表示的,但当我查看db时,所有时间戳都是这样的,即2011-11-22T15:22:10Z

那么,如何在Go中设置这样的格式

更新 我能够使用以下代码格式化它

t := time.Now()
fmt.Println(t.Format("2006-01-02T15:04:05Z"))
现在的问题仍然是,Z在这里意味着什么。我应该得到UTC时间吗


另一个问题是,我用于格式化的值似乎会影响输出,即,当我使用2019-01-02T15:04:05Z时,输出变成2029-02-02T20:45:11Z,为什么?

Go提供了非常灵活的方法,通过示例解析时间。为此,您必须以您选择的格式编写参考时间。参考时间为2006年1月2日星期一15:04:05 MST。在我的例子中,我使用这个引用时间来解析Now:


Go通过示例提供了非常灵活的时间解析方法。为此,您必须以您选择的格式编写参考时间。参考时间为2006年1月2日星期一15:04:05 MST。在我的例子中,我使用这个引用时间来解析Now:


如果时间是协调世界时UTC,则直接在时间后添加一个Z,不带分隔空间。Z是UTC零偏移的区域标识符。因此,UTC 09:30表示为09:30Z或0930Z。同样,UTC的14:45:15被写成14:45:15Z或144515Z。[16]


从数据包的来源

如果时间是协调世界时UTC,则在时间之后直接添加一个Z,不带分隔空间。Z是UTC零偏移的区域标识符。因此,UTC 09:30表示为09:30Z或0930Z。同样,UTC的14:45:15被写成14:45:15Z或144515Z。[16]

来自包的源代码

fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05Z"))
// Some valid layouts are invalid time values for time.Parse, due to formats
// such as _ for space padding and Z for zone information.
// Replacing the sign in the format with a Z triggers
// the ISO 8601 behavior of printing Z instead of an
// offset for the UTC zone. Thus:
//  Z0700  Z or ±hhmm
//  Z07:00 Z or ±hh:mm
//  Z07    Z or ±hh