2013-04-27

Go で時刻から文字列を生成する

Go で時刻を文字列にフォーマットしたくなりました。結論から言うと、time.Time 型の Format 関数の引数に、「2006年1月2日午前3時4分5秒」を、どう表現したいのかを指定します。

t := time.Time.Now()
var x := t.Format("01/02 15:04")

とすると、現在時刻をこの書式で文字列になります。

最初、t.Format("%y") とか %Y とかしても、そのまま %y とか表示されてしまい、困惑していました。ドキュメントを、一瞥したら

The layout defines the format by showing the representation of the standard time,

Mon Jan 2 15:04:05 -0700 MST 2006

which is then used to describe the time to be formatted.

と書いてあって「だから年や月のフォーマットはどうやって指定するんだよ」と思ったわけです。

ソースをしばらく眺めていて、あーそういうことであったか、と、やっと分かりました。Parse() 関数も同じ方法で文字列から時刻に変換します。

時刻文字列の書式をこんな方法で指定するのは初めて知りました。知らなかっただけで、実はメジャーなのかも知れません。

明日の自分へ: ドキュメントを読めと、あれほど。