環境
- Go 1.15
やりたいこと
Excelから日付をstring型で持ってきた時は2011/8/10
のようになっている。
toDate()
関数を使ってgolangのdate型にしたい
結論
ポイントはlayout
を狂いなく2006/1/2
に設定すること。
例えばlayout
を2006/1/3
とかにするとエラーになる。
parseDate.go
strVal := 2011/8/10
layout := "2006/1/2"
timeVal, err := time.Parse(layout, strVal)
詰まったポイント
2011/8/10
を0埋めして2011/08/10
にする処理が必要だと思ってた。
わざわざ0埋めする関数padNumberWithZero
を作った。
func padNumberWithZero(value string) string {
i, _ := strconv.Atoi(value)
return fmt.Sprintf("%02d", i)
}
しかしそれでもエラーが発生した
エラー内容
2021/06/04 07:39:49 parsing time "2011/08/10" as "2011/09/01": cannot parse "/08/10" as "1"2011/8/10
まとめ
golangでtime.Parse()を使いたい時は第一引数にはgolangが定めている日付や時間と全く同じlayoutを指定しないといけないから注意(分かりにくすぎるし面倒くさい、、、)