hduhelp / backend_2020_daily

1 stars 0 forks source link

上周布置的`2006-01-02 15:04:05`在golang中是什么意思,为什么要使用这个时间呢? #1

Open XMLHexagram opened 4 years ago

Caveinr commented 4 years ago

time.format()的字符串占位符, 相当于%ymd

ghost commented 4 years ago

就是时间格式化的标准:

由于MST是GMT-0700,因此参考时间可以认为是

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

这是一个简单的递增顺序:01 02 03 04 05(PM)06 07。

使用03:04 PM而不是03:04 AM可以更清楚地显示两个时间表示15:04和03:04 PM

asjdf commented 4 years ago

这个问题我觉得很好,我认为母猪产后护理,首先要从产前做起,母猪产前四五天要逐渐减少饲喂量,其目的是减少腹部压力产前吃得少产后才能吃得多。若产前吃得多,不仅会使产程过长,还会造成产后胃积食。 正经答案:用来定义时间的格式 go中自带的格式:

const (
    ANSIC       = "Mon Jan _2 15:04:05 2006"
    UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
    RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
    RFC822      = "02 Jan 06 15:04 MST"
    RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
    RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
    RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
    RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
    RFC3339     = "2006-01-02T15:04:05Z07:00"
    RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
    Kitchen     = "3:04PM"
    // Handy time stamps.
    Stamp      = "Jan _2 15:04:05"
    StampMilli = "Jan _2 15:04:05.000"
    StampMicro = "Jan _2 15:04:05.000000"
    StampNano  = "Jan _2 15:04:05.000000000"
)

可以发现所有年月日时分秒甚至时区的值都是互斥不相等的。因为都不相等所以通过遍历定义就可以用switch case解析出每个区块的意义和在字符串中的位置(程序太长 不贴出来),这样输入对应格式的时间字符串就可以顺利解析出来。

资料参考:

  1. https://www.jianshu.com/p/f809b06144f7
  2. https://www.jianshu.com/p/c7f7fbb16932
GuanyunLu commented 4 years ago

谢邀,人在火星刚下飞船。 去年的第一次后台例会上,大佬说这是未经考证的Go语言初始版本发布时间。只能说,这太未经考证了。

lmsh7 commented 4 years ago

不需要占位时可以写成 2006-1-2 15:4:5

2006是年的格式 1是月, 01在只有个时占十位 2是天, 02同上 15是小时, 4是分, 04同上 5是秒, 05同上 按照switch的case解析

william2ai commented 4 years ago

re:这并不是go的发布时间。。可能是楼上的正经解释 也可能就是单纯的一种新的benchmark

xNihil0 commented 4 years ago

写小任务格式化时间字符串的时候用到过 大致相当于其它语言中的 %m %h 等占位符 至于为什么要使用这个时间其实我也想不通 甚至事实上觉得这么做很麻烦