パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

Goでの日付変換

最近やっとのことGoを真面目にやりだしてTwitterAPIで取得したtweet.CreatedAtの日時文字列をISO8601形式の文字列にしたいなと思ったけど、time.parseのformatの指定とかが独特で少しハマった。


Rubyとかだと%Y/%m/%dとかでformat指定するけど、Goだと2006-01-02みたいな具体的な年月日などの数字を指定する必要がある。
初めなんでサンプルとかこんな中途半端な日時なんだろう?と思い実装した日に変えたろって変えたら0001/01/01 00:00:00 +0000 UTCみたいになってしまった。


調べてみると下記のように

GoのtimeのFormat表記方法でハマったこと - emahiro/b.log

結論としては goでのtimeのformat変換では使える文字が決まっている っていうことになります。

と、ありあの日時が固定らしいと分かりなんじゃそりゃ!っという感じ。


なんか特別な意味でもあるのかと思ったけど、下記を見てただふーーーん...というお気持ちになっただけなのでした。

Goのtimeパッケージのリファレンスタイム(2006年1月2日)は何の日? - Qiita

その他参考

Goでtime.Parseを使うときのタイムゾーンについて

[Go] UTCの時刻を日本時間に変換する - Qiita