Golang 日期格式的问题
编程
Published: 2016-05-16

这是从Qiita迁移过来的内容。

在Golang中,指定日期格式需要使用time的Format,但我需要将其格式化为以下格式以便用于graphite-api。

然而,奇怪的是,有些环境可以正常工作,而有些则不行,这让我浪费了很多时间。
从结论来看,似乎是个bug?通过升级golang版本已修复。

关于格式指定

指定格式  HH:SS_YYYYMMDD
所以,Golang 中为 Format("15:04_20060102")

测试代码

package main

import (
        "fmt"
        "time"
)

func main() {
        now := time.Now()
        fmt.Printf("now=%v, formatted=%s\n", now, now.Format("15:04_20060102"))
}

1.6.2的情况

# go run main.go
now=2016-05-16 17:14:54.851096532 +0900 JST, formatted=17:14_20160516

1.5.1的情况

# go run main.go
now=2016-05-16 17:13:45.995101638 +0900 JST, formatted=17:13160160516

15:04_20060102中的_2部分似乎被识别为日期的stdUnderDay。
https://github.com/golang/go/blob/master/src/time/format.go#L82

有人告诉我,这在1.6.1左右已被修复。
https://github.com/golang/go/commit/f4b4d2f4d9f574fe34b826bf0e6784956a247687

总之,我决定将我的环境也升级到1.6.2。