golangでtime.Parse()を使ってstring型をdate型に型変換する方法
環境
- 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を指定しないといけないから注意(分かりにくすぎるし面倒くさい、、、)
Author And Source
この問題について(golangでtime.Parse()を使ってstring型をdate型に型変換する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/juchilian/items/b8b0eceecb77a7249a30著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .