Golang时间格式化

 Jan. 27, 2013, 11:06 p.m.   12 comments    Golang

最近用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秒到底发生了什么?


sendong

sendong Jan. 27, 2013, 11:21 p.m. Reply

呵呵,go语言诞生?

Chon

Chon Jan. 28, 2013, midnight Reply

Go语言发布很久了啊


Kunshan Wang

Kunshan Wang Jan. 27, 2013, 11:32 p.m. Reply

如何输出January这样的本地化名称呢?
p.s.英语这种烂语言表达不出“十三月”这么高级的概念。日语还好,可以说“十三月”,但是说不出来“星期八”。

Chon

Chon Jan. 28, 2013, 12:03 a.m. Reply

看了一下源码,应该就是用January来格式化,如果需要缩写就用Jan,还有Monday和Mon以此类推。


insion

insion March 19, 2013, 1:04 p.m. Reply

2006是go语言在google内部谋划的日子,
后面依次是1、2、3、4、5的顺序表示


muxueqz

muxueqz May 24, 2013, 8:11 a.m. Reply

果然奇葩。。。


xero

xero Oct. 18, 2013, 6:49 p.m. Reply

2006-01-02 15:04:05 -0700,按照1234567去记忆非常简单。

Dyluck

Dyluck Feb. 28, 2015, 4:03 p.m. Reply

the reference time can be thought of as
01/02 03:04:05PM '06 -0700


qhsong

qhsong June 28, 2015, 4:46 p.m. Reply

在google 找golang的日期格式,意外的再次来到了学长你的博客上~~

Chon

Chon June 28, 2015, 5:01 p.m. Reply

233


cody

cody March 3, 2017, 1:56 p.m. Reply

最近刚踩坑 不是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!

Chon

Chon March 3, 2017, 2:36 p.m. Reply

哈哈,是 3 pm 而不是 3 am