製品活用2018-07-13Go言語(Golang)の日付フォーマットとゼロパディングについてTech開発Divの藤原です。サーバー側のアプリを書くときは主に(というか私の場合はほぼ)Go言語を使っています。C言語をやっていた私にとってGo言語は非常にとっつきやすく、今ではかなりのお気に入りです。今回はそんなGo言語の日付フォーマットについて書いていこうと思います。Go言語の日付フォーマット日付フォーマットのゼロパディング(ゼロ埋め)Go言語の日付フォーマットGo言語の日付フォーマットは少し特殊で特定の数字自体が年や月や日などを表します。「年/月/日」を以下のような形で表現できます。yyyy/MM/dd分かり易いですね。Go言語の場合に同じ「年/月/日」を以下のような形で表現する必要があります。2006/01/02ぱっと見、フォーマットだとは思えませんが、これがGo言語の日付フォーマットです。フォーマットをまとめると以下のとおりです。MST日付フォーマットのゼロパディング(ゼロ埋め)そして、この日付フォーマットを使うときに気を付けないといけないのがゼロパディングです。文字列をパースして日付型(time.Time)に変換するときに注意が必要です。以下のような2つの日付の文字列があります。2018-06-012018-6-1この文字列を以下の日付フォーマットでパースするとどうなるでしょうか?2006-01-02パースのソースコードはこんな感じです。"2018-6-1")これを実行すると、上は成功しますが、下は失敗します。月と日のフォーマットが0パディング指定になっているからです。実際にソースコード書いて実行してみました。https://play.golang.org/p/5MdH96ybRYmこのような結果になります。rangeでは、上記を踏まえ、修正してみましょう。"2018-6-1")こんな感じにして、月と日のフォーマットからゼロパディングを取り除きました。これだと今度は下は成功するけど上は失敗するような気もします。実際にやってみましょう。UTCなんと、両方とも成功です。ゼロパディングを付けないフォーマットの場合は、ゼロパディングがあってもなくてもパースしてくれるようです。色んなパターンを試してみました。https://play.golang.org/p/14vMPEwZX7Wすべて期待通りの結果になりました。配列をいじれば、他にも色々試せますので良かったらお試し下さい。開発Divの瀧田です。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。