polarisxu icon indicating copy to clipboard operation
polarisxu copied to clipboard

posts/go/why-time-use-2006/

Open utterances-bot opened this issue 2 years ago • 6 comments

Go 的时间格式化为什么是 2006-01-02 15:04:05?

https://polarisxu.studygolang.com/posts/go/why-time-use-2006/

utterances-bot avatar Jul 28 '22 04:07 utterances-bot

这是我见过对 golang 的时间格式化最中肯的回答了。👍

2015WUJI01 avatar Jul 28 '22 04:07 2015WUJI01

那为啥不 2001-02-03 04:05:06 呢

wensenz avatar Nov 28 '22 09:11 wensenz

请问你的21-8-4 9:30:00是1921年还是2021年???还是反人类设计,不如类似yyyy-MM-dd用一定的规则来代替

YuHong931219 avatar Feb 08 '23 06:02 YuHong931219

请问你的21-8-4 9:30:00是1921年还是2021年???还是反人类设计,不如类似yyyy-MM-dd用一定的规则来代替

很有道理哇,可以去 go 仓库提一个 issue 或者直接提个 pr

2015WUJI01 avatar Feb 08 '23 08:02 2015WUJI01

好奇试了一下,发现 68 69 是个分界线,小于等于 68 都会判定为 20xx 年,大于等于 69 为 19xx 年。

IMG_20230212_012605.jpg

IMG_20230212_012640.jpg

应该有 issue 或者 goblog 说明过这个问题,不过暂时还没找到相关文章。

有点像平时我们在写日记或者填写日期的时候,很自然就写上 22.12.30 这样,大家一看 22,喔,很自然就理解为 2022 了,同理,写了个 93.12.19 也能理解为是 1993 年而不是 2093。像 77 这样夹在中间的数字,就很有歧义,目前大概率会理解为 1977 上世纪七十年代而不是未来的 2077,而在 2076 年大概率会理解为是 2077 而不是 1977。

所处的时代不同,对于简写的时间也会产生不同的理解。两个数字的年份缩写,几乎只能在特定的场景下使用,滥用一定会造成理解偏差。

据我所知,其他语言也有对于短年份时间的解析,例如 PHP 同样会解析 22 为 2022,99 解析为 1999。所以说,这不是语言设计的缺陷,而是短年份本身在表达上的局限性。(举个不恰当的例子,有点歪理哦,就好比喊人直接喊姓,例如“嗨老张”,并不是任何场合都能这么叫)

2015WUJI01 avatar Feb 11 '23 17:02 2015WUJI01

请问你的21-8-4 9:30:00是1921年还是2021年???还是反人类设计,不如类似yyyy-MM-dd用一定的规则来代替

应该指2021年。 好像是根据一个日期规则, 比如“68” 比68小的就是20XX, 比68大的就是19XX 。。应该是的吧。

shyinyong avatar Feb 15 '23 08:02 shyinyong