Go での時刻(日付なし)の取り扱いと文字列パース [golang]
Go で時刻を取り扱うには、どのパッケージのどの型を使えばいいのかよくわからなかった。
日付は、 time パッケージの日付時刻型の時刻部分を 00:00:00 にすればいいんかなぁ、とは思っていた。
ここ↓ にある回答を見ると、time パッケージで時刻もパースできるみたい。
http://stackoverflow.com/questions/14094228/parse-go-time-stamp-using-go
ということで試してみると、時刻だけのフォーマットの文字列をパースすると西暦 0年 1月1日の時刻 (UTC) として扱われるみたい。こういうもんなのか。
まぁ、 timestamp, date, time なんて3つも型なくても、文脈でわかるわな。
同じデータ型として扱う場合のデメリットを、あえて言うなら、日付だけ、時刻だけしかあつかわないのにメモリ4バイトもったいないってこと?
まあ、21世紀なので、4バイトくらい無駄にしてもよかろう。
time.Parse() は、%Y とかのフォーマット文字列じゃなくて、日付時刻の例を指定してパースする。変わってるなぁ。
第1引数がフォーマット文字列で第2引数がパースしたい文字列。
ぱっと見、どっちをパースしたいのかよくわからない。
いくつかのパターンでやってみると、いろいろな時刻フォーマットでパースできるにはできるけど、フォーマット文字列として指定する文字列を適当に選ぶと、思ったようにフォーマット判定してくれなかったりする。
試行錯誤してうまくパースできるパターンのコードを貼っておく
https://gist.github.com/nakagami/6737567
日付は、 time パッケージの日付時刻型の時刻部分を 00:00:00 にすればいいんかなぁ、とは思っていた。
ここ↓ にある回答を見ると、time パッケージで時刻もパースできるみたい。
http://stackoverflow.com/questions/14094228/parse-go-time-stamp-using-go
ということで試してみると、時刻だけのフォーマットの文字列をパースすると西暦 0年 1月1日の時刻 (UTC) として扱われるみたい。こういうもんなのか。
まぁ、 timestamp, date, time なんて3つも型なくても、文脈でわかるわな。
同じデータ型として扱う場合のデメリットを、あえて言うなら、日付だけ、時刻だけしかあつかわないのにメモリ4バイトもったいないってこと?
まあ、21世紀なので、4バイトくらい無駄にしてもよかろう。
time.Parse() は、%Y とかのフォーマット文字列じゃなくて、日付時刻の例を指定してパースする。変わってるなぁ。
第1引数がフォーマット文字列で第2引数がパースしたい文字列。
ぱっと見、どっちをパースしたいのかよくわからない。
いくつかのパターンでやってみると、いろいろな時刻フォーマットでパースできるにはできるけど、フォーマット文字列として指定する文字列を適当に選ぶと、思ったようにフォーマット判定してくれなかったりする。
試行錯誤してうまくパースできるパターンのコードを貼っておく
https://gist.github.com/nakagami/6737567
コメント 0