madokaのブログ

勉強したことのoutput先として使ってます。内容はpythonがらみが多いかもです。

Go 日時フォーマットについて

Goにて日時をフォーマットしようと思い、よくみる%y%M%dを書いたところ、上手くいかなかったため調べてみました。

Goでは20060102と書くと同様のフォーマットができるみたいです。

Goでは日時フォーマットに使う日時が決まっている

なんとGoでは日時フォーマットに使う日時が決まっているのです。

2006年1月2日午後3時4分5秒がその日時です。

実際に表記してほしい状態で指定できるので、わかりやすくていいですよね。(プログラマからしたら、他の言語と違うので逆にわかりにくい気はする...)

Junuaryとかも使える

上記に書いた数字以外もちろん使えます。例えばJunuaryやJunて書いても大丈夫です。

package main

import "fmt"
import "time"

func main() {
    n := time.Now()
    fmt.Println(n)                           // 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
    fmt.Println(n.Format("20060102"))        // 20091110
    fmt.Println(n.Format("2006 Junuary 02")) // 2009 Junuary 10
    fmt.Println(n.Format("2006 Jun 02"))     // 2009 Jun 10
    fmt.Println(n.Format("2006年1月2日"))     // 2009年11月10日
    fmt.Println(n.Format("06/01/02"))        // 09/11/10
}

 

ちなみに

なんでこの日なんだろう、Goと何か関係がある日なの、、?と考えを巡らしてしまったのですが、googleさんに聞いたところ、Goができた日みたいな素敵な意味ではなく、単純に(1,2,3,4,5,6)の並びだからという話が有力そうです。(覚えやすさ大事...!)