【问题标题】:Understanding golang date formatting for time package了解时间包的 golang 日期格式
【发布时间】:2017-09-12 03:22:43
【问题描述】:

所以我的功能表现良好。

func Today()(result string){
    current_time := time.Now().Local()
    result =  current_time.Format("01/02/2006")
    return
}

打印MM/DD/YYYY 我认为如果我在天数位置有一个大于 12 的值来明确它是 MM/DD/YYYY 会更易读,所以我将其更改为以下

func Today()(result string){
    current_time := time.Now().Local()
    result =  current_time.Format("01/23/2004")
    return
}

令我懊恼的是,这导致了不好的结果。打印MM/DDHH/DD0MM

意识到我的错误,我看到格式是由reference time...定义的...

Mon Jan 2 15:04:05 -0700 MST 2006

我想知道这个时刻是否有其他实例被用作日期时间的格式参考,以及这个参考时刻是否有昵称(如null island)?

【问题讨论】:

  • 如果我理解正确,你是想说吗?您无法使用 01/23/2004 作为格式布局。如是;您使用的格式布局不正确。建议你看看时间包常量部分golang.org/pkg/time/#pkg-constants了解更多。
  • 我想知道这个参考时间还用在什么地方,是否有名字。我 100% 理解为什么 01/23/2006 会产生这样的结果。
  • 这纯粹是推测,但我怀疑它最初的目的是比%a %b %e %H:%M:%S %z %Z %Ydefault output format of the POSIX date utility 的一个微妙变体)更易于阅读。进一步推测,在许多国家,星期一是一周的第一天,而一月是一年中的第一个月,这就是使用它们的原因。 2006 年(即'06)是唯一符合标准的年份,因此它是第 6 项。
  • 至于 15,而不是 03,这可能是 AM/PM 位,因为文档特别提到了“PM”。
  • @ChronoKitsune 这就是我的信念。我只是搜索了一下;看到这个帖子groups.google.com/d/msg/golang-nuts/806le5R6gEc/iYbOz5z6ruwJ

标签: go time format


【解决方案1】:

日期字符串中的值不是任意的。您不能只是将 02 更改为 03 并期望它能够正常工作。日期格式化程序会查找这些特定值,并知道 1 表示月份,2 表示月份中的某天,等等。

01/02/2006 更改为01/23/2004 就像将一个人类可读的First Name: ______ Last Name: ______ 格式更改为First Name: ______ Ice Cream: ______。你不能指望任何人都知道Ice Cream 应该意味着Last Name

名字

为此提供的唯一名称是“参考时间”,here

Parse 解析格式化的字符串并返回它所代表的时间值。布局通过显示参考时间如何定义格式

Mon Jan 2 15:04:05 -0700 MST 2006

here:

这些是用于 Time.Format 和 Time.Parse 的预定义布局。布局中使用的参考时间为具体时间:

Mon Jan 2 15:04:05 MST 2006

这是 Unix 时间 1136239445。由于 MST 是 GMT-0700,参考时间可以认为是

01/02 03:04:05PM '06 -0700

要定义您自己的格式,请写下参考时间按照您的方式格式化后的样子;例如,参见 ANSIC、StampMicro 或 Kitchen 等常量的值。该模型旨在演示参考时间的样子,以便 Format 和 Parse 方法可以将相同的转换应用于一般时间值。

要指定您谈论的是 Go 的参考时间,我会说“Go 的参考时间”。或者直截了当地说,“Go 的时间。解析参考时间。”


顺便说一句,你的函数可以大大缩短:

func Today() string {
    return time.Now().Local().Format("01/02/2006")
}

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多