Undefined Title

Undefined Title

Go言語 Time/Date

Goでの日付、時間の取り扱いについて。

  • 現在時刻の取得
  • Unixタイム(へ|からの)変換
  • 日付文字列のパース
  • Time値のフォーマット
  • 数時間前、などの計算

これくらいあれば当面困らないっしょ。

package main

import (
  "fmt"
  "time"
)

func main() {
  fmt.Println(time.Now())
  fmt.Println(time.Now().Unix())
  fmt.Println(time.Unix(1371646123, 0))

  fmt.Println(time.Parse("Mon Jan 2 15:04:05 MST 2006", "Fri Aug 30 08:18:23 GMT 2013"))
  fmt.Println(time.Parse("2006-01-02 15:04:05 +0600", "2013-08-30 08:18:23 +0900"))
  fmt.Println(time.Parse(time.RFC3339, "2013-08-30T08:18:23+07:00"))

  fmt.Println(time.Now().Format("2006/01/02 15:04:05 GMT"))
  fmt.Println(time.Now().Add(-(3*time.Hour + 40*time.Minute)))
  fmt.Println(time.Date(2013, 8, 30, 8, 18, 23, 0, time.UTC).AddDate(0, 0, 1))
}

time.Parse

time.Parse関数のタイムゾーンの扱いが正直良くわからない。

time.RFC3339の値は2006-01-02T15:04:05Z07:00なんだけど、次のコードはParseエラーになるんだよな。

time.Parse(time.RFC3339, "2013-08-30T08:18:23Z07:00")

必要になったらまた突っ込んで調べよう。