Golang の日付操作はほとんど直感的で楽だけど、
特に Parse(), Format() 関連がドキュメントちゃんと読まないとわからない。
Golang におけるフォーマットの書き方
よくあるフォーマット記法だと、
下記のような Y やら d やらのアルファベットを組み合わせたものだと思う。
[PHP]
Y/m/d(D) H:i:s
[javascript:momentjs]
YYYY/MM/DD(ddd) HH:mm:ss
しかし、 Golang ではフォーマット記法が下記のようになる。
フォーマット表記
- Mon Jan 2 15:04:05 -0700 MST 2006
- Mon 01 02 15:04:05 -0700 MST 2006
- Mon 1 02 15:04:05 -0700 MST 2006
func (t Time) Format(layout string) string
上記の他の言語のフォーマットを Golang で実現しようとすると、
下記のように書く。
time.Now().Format("2006.01.02(Mon) 15:04:05")
よく使う関数
現在の Unixtime (int64) を取得する
- func (t Time) Unix() int64
- time.Unix(sec int64, nsec int64) と time.Time.Unix() は別物
u := time.Now().Unix()
fmt.Print(u)
String 型 → Time 型 (Date) への変換
str := "2019/08/01 12:23:45"
t, _ := time.Parse("2006/01/02 15:04:05", str)
fmt.Print(t)
int64 型 (Unixtime) → Time 型 (Date) への変換
- func Unix(sec int64, nsec int64) Time
- time.Unix(sec int64, nsec int64) と time.Time.Unix() は別物
unix := int64(1564662225)
t = time.Unix(unix, 0)
fmt.Print(t)
Time 型 (Date) → String 型への変換
t := time.Now()
s := t.Format("2006.01.02(Mon) 15:04:05")
fmt.Print(s)