Go言語でMySQLのtimestamp型の日付変換をしてみる

Go言語でMySQLのtimestamp型の日付変換をしてみた。

package main

import (
    "fmt"
    "time"
)

func main() {
    t, _ := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", "2016-08-15 01:15:57.065962927 +0900 JST")
    fmt.Println(t)
    fmt.Println(t.Format("2006-01-02T15:04:05Z07:00"))
    fmt.Println(t.Format("2006/01/02 15:04"))
    fmt.Println(t.Format("2006年01月02日 15時04分"))
    fmt.Println(t.Format("2006_01_02"))
}

結果は以下、

2016-08-15 01:15:57.065962927 +0900 JST
2016-08-15T01:15:57+09:00
2016/08/15 01:15
2016年08月15日 01時15分
2016_08_15

The Go Playground

time.Parseの第一引数には定数が用意されている。定数にない場合は、自分で定義をする必要がある。

たとえばこんな感じに使える。

fmt.Println(time.Now().Format(time.ANSIC))

//2016-08-15T01:35:48+09:00

定数の一覧

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"
)

time - The Go Programming Language