So-net無料ブログ作成

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

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

トラックバック 0