最近用Go语言写程序用到了time包,需要将时间以2012-01-27 22:02:02的格式输出,但是Time对象(准确来说不是对象,而是struct)的Format方法并没有提供默认满足要求的layout string,需要自己来填写。
以前写Python时,对时间的格式化是采用"%Y-%m-%d %H:%M:%S"这样的layout string:
datetime.now().strftime("%Y-%m-%d %H:%M:%S")
而Go语言的方式则略显奇葩,采用的是"2006-01-02 15:04:05"这样的layout string:
time.Now().Format("2006-01-02 15:04:05")
从源码(http://golang.org/src/pkg/time/format.go [line 59])可以看出,2006代表年份,01代表月份...于是我一直很好奇,2006年1月2日这一天的15点04分05秒到底发生了什么?
12 comments
呵呵,go语言诞生?
Go语言发布很久了啊
如何输出January这样的本地化名称呢?
p.s.英语这种烂语言表达不出“十三月”这么高级的概念。日语还好,可以说“十三月”,但是说不出来“星期八”。
看了一下源码,应该就是用January来格式化,如果需要缩写就用Jan,还有Monday和Mon以此类推。
2006是go语言在google内部谋划的日子,
后面依次是1、2、3、4、5的顺序表示
果然奇葩。。。
2006-01-02 15:04:05 -0700,按照1234567去记忆非常简单。
the reference time can be thought of as
01/02 03:04:05PM '06 -0700
在google 找golang的日期格式,意外的再次来到了学长你的博客上~~
233
最近刚踩坑 不是1 2 3 4 5! 不是1 2 3 4 5! 不是1 2 3 4 5!
而是1 2 15 4 5!而是1 2 15 4 5!而是1 2 15 4 5!
哈哈,是 3 pm 而不是 3 am
Leave a Comment