少しハマったのでメモ
目的
PostgresQLに保存されているDate型とTime型のレコードをGoのTime型として扱うのに、値をパースしたい。
問題点
普通にPostgresQLのTime型の'10:00'というデータをロードすると、
0000-01-01T10:00:00Z
という文字列になってしまうので、これをGoのtimeパッケージのTime型として認識させたい。
結論
createdAt, _ := time.Parse(time.RFC3339, value.CreatedAt)
これでcreatedAt
という変数にtime.Time型の値が入ったので、あとは好きなようにフォーマットを選ぶだけ(valueにはPostgresQLからロードしたデータが入っている)。
今回は時間だけ欲しかったので、createdAt.Format("15:04")
とすればHH:mmのフォーマットの値が取得できる(今回のデータでは10:00)。
※time.Time型のフォーマットの方法は他の記事を参考のこと
補足
日付の形式には色々あって、PostgresQLの場合はRFC3339になっていたのかな。
PostgresQLのドキュメントによれば、標準でISO8601に準拠していると記載があったが、RFC3339とISO8601の違いはあまり分かっていない。
他の形式の場合にも使えるフォーマットがtimeパッケージには定数で色々あるのでGoのドキュメントを参照のこと。