关于Golang日期格式化指定的方法
只是想简单地改变日期格式而陷入了困境,所以这是个备忘录。(以下假设package和import已经适当声明。)
让我们比较使用Ruby和Golang来为今天的日期选择特定的格式,并对其进行说明。
在Ruby的情况下
要改变日期格式,使用以下通过指定以%开头的格式进行转换的方式来进行。
# 2015-06-12 00:50:19 +0900
Time.now
# 2015-06-12
Time.now.strftime("%Y-%m-%d")
对于Golang来说
一方,Golang会根据特定字符串指定的格式进行转换。
// 2015-06-12 00:17:10.467238206 +0900 JST
time.Now()
// 2015-06-12
time.Now().Format("2006-01-02")
以下是可以指定的格式。有关日期格式的更详细信息,请参阅源文件src/time/format.go。
const (
stdLongMonth = "January"
stdMonth = "Jan"
stdNumMonth = "1"
stdZeroMonth = "01"
stdLongWeekDay = "Monday"
stdWeekDay = "Mon"
stdDay = "2"
stdUnderDay = "_2"
stdZeroDay = "02"
stdHour = "15"
stdHour12 = "3"
stdZeroHour12 = "03"
stdMinute = "4"
stdZeroMinute = "04"
stdSecond = "5"
stdZeroSecond = "05"
stdLongYear = "2006"
stdYear = "06"
stdPM = "PM"
stdpm = "pm"
stdTZ = "MST"
stdISO8601TZ = "Z0700" // prints Z for UTC
stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
stdNumTZ = "-0700" // always numeric
stdNumShortTZ = "-07" // always numeric
stdNumColonTZ = "-07:00" // always numeric
)
最后
由于我习惯了类似Ruby的格式指定,所以我觉得Golang的这种指定方式有点奇怪。为什么会搞得这么难懂呢?或许这就是正常的方式吗?如果有人知道原因,请告诉我。
请参考
- How to format current time using a yyyyMMddHHmmss format?