Контент, перенесенный из Qiita.
Чтобы указать формат даты в Golang, используется метод Format из пакета time, но
необходимо было сделать формат для graphite-api.
Однако, по какой-то причине были среды, где это работало, и среды, где это не работало, и я потратил время впустую.
В конечном итоге, похоже, это была ошибка? Да, она была исправлена с обновлением версии 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
Кажется, часть _2 в 15:04_20060102 была распознана как 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.