0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

golangでtime.Parse()を使ってstring型をdate型に型変換する方法

Posted at

環境

  • Go 1.15

やりたいこと

Excelから日付をstring型で持ってきた時は2011/8/10のようになっている。
toDate()関数を使ってgolangのdate型にしたい

結論

ポイントはlayoutを狂いなく2006/1/2に設定すること。
例えばlayout2006/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を指定しないといけないから注意(分かりにくすぎるし面倒くさい、、、)

参考 https://golang.org/src/time/format.go

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?