这是从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。