はじめに
どの言語でも時間を表示したり、プログラムに利用したいことが多々ある。
go言語でよくつかうライブラリ time について整理する。
公式ドキュメントはこちら
時間のフォーマットは世界中にいろいろある。
const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" Kitchen = "3:04PM" // Handy time stamps. Stamp = "Jan _2 15:04:05" StampMilli = "Jan _2 15:04:05.000" StampMicro = "Jan _2 15:04:05.000000" StampNano = "Jan _2 15:04:05.000000000" )
今回は我々日本人に馴染みのあるRCF3339を利用することとする
サンプルプログラム
package main import ( "fmt" "time" ) func main() { //現在時間を取得する t := time.Now() fmt.Println(t) // RCF3339 formatに変換する fmt.Println(t.Format(time.RFC3339)) // 年月日を取得する fmt.Println(t.Year(), t.Month(), t.Day()) // 月を数字(April -> 4 に変換する) fmt.Println(t.Year(), int(t.Month()), t.Day()) // 時分秒を表示 fmt.Println(t.Hour(), t.Minute(), t.Second()) }
出力結果
2019-04-06 11:13:36.125176 +0900 JST m=+0.000473714 2019-04-06T11:13:36+09:00 2019 April 6 2019 4 6 11 13 36
“` int(t.Month()) “` とすることで数字(4月など)に変換できるのは面白い。