代码之家  ›  专栏  ›  技术社区  ›  Em Ae

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

  •  -1
  • Em Ae  · 技术社区  · 7 年前

    以前从未尝试过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

    2 回复  |  直到 7 年前
        1
  •  4
  •   Tim Cooper    7 年前

    Go通过示例提供了非常灵活的时间解析方法。为此,您必须以您选择的格式编写“参考”时间。参考时间为 Mon Jan 2 15:04:05 MST 2006 . 在我的例子中,我使用这个引用时间来解析 Now() :

    fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05Z"))
    
        2
  •  2
  •   Steve Wilhelm    7 年前

    https://en.wikipedia.org/wiki/Time_zone#UTC

    // 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
    

    来自包的源代码 time/format.go

    推荐文章