golang

golangの日付のフォーマット指定

More than 1 year has passed since last update.

golangで時間をフォーマット指定した文字列に変換する時には
%Yといったような制御文字で表すのではなくて
"2006/1/2 15:04:05"という決まった日付に対して、出力例を与えるような形になっている。
(ちなみに、この日以外の指定は受け付けないので注意。)

出力内容がそのままかかれるので
ソースを読むときには、分かりやすいといえばわかりやすいかも。

goreで出力どんな感じになるのか確認してみた。

gore> :import time

gore> date := time.Date(2017, 8, 20, 23, 39, 45, 0, time.Local)
time.Time{sec:63638836785, nsec:0, loc:(*time.Location)(0x51a8c0)}

gore> date.Format("2006/1/2 15:04:05")
"2017/8/20 23:39:45"

gore> date.Format("2006/1/2 3:04:05 pm")
"2017/8/20 11:39:45 pm"

gore> date.Format("2006/Jan/2 03:04:05 pm")
"2017/Aug/20 11:39:45 pm"

gore> date.Format("2006/January/2 03:04:05 PM")
"2017/August/20 11:39:45 PM"

gore> date.Format("20060102150405")
"20170820233945"

gore> date.Format("2006010230405")
"20170820113945"

gore> date.Format("20060102030405")
"20170820113945"

gore> date.Format("060102")
"170820"

Janと書けば月の出力が英語になるし
15ではなく3と書けばAM/PMを区別するといった具合になっている。
あと、03なのか3なのかで0で埋めるかどうかも設定できているみたい。
年の下二桁もちゃんと指定できるのね。

ちなみに、日付はアメリカの時間書き方の順番で1,2,3,4,5,6と並べているため
1月2日 15時04分05秒 2006年という形になっているとの事

参考
Golangでの日付のフォーマット指定の方法について
Goのtimeパッケージのリファレンスタイム(2006年1月2日)は何の日?