Goの時間フォーマットは他の言語とかなり違っている
多くのプログラミング言語には時間を表示、保存するときに文字型に変換するためのフォーマットが用意されています
例えばJavaではこんな感じでyやMを使って日付フォーマットを指定します。大方他の言語でもこのような方式になっていると思います
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date now = new Date(System.currentTimeMillis()); String nowStr = format.format(now); System.out.println(nowStr); //出力:2018-10-15 13:07:24.872
Goだとどうでしょうか。こんな感じに指定します。
now := time.Now() nowStr := now.Format("2006-01-02 15:04:05.000") //出力結果:2018-10-15 22:14:57.1516
あれ?なんで時刻の値を与えているんだ?と最初戸惑いましたが、Goでは2006年1月2日の15時4分という時間をサンプルとして与えてフォーマットとしています。
意味 | Java | Golang |
---|---|---|
月 | M | 1 |
日 | d | 2 |
時間 | H | 3 |
分 | m | 3 |
秒 | s | 5 |
年 | y | 06(2006) |
なおこの時刻は何か特別な日付ではなく、作者が自然と考えるフォーマットで書いたときに1,2,3...と並ぶように作ったようです。
これはアメリカ式の時刻の順番なのだ。"1月2日午後3時4分5秒2006年"(つまり「自然な順番」で1, 2, 3, 4, 5, 6)を指しているのである。