LoginSignup
18
14

More than 5 years have passed since last update.

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

Posted at

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日)は何の日?

18
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
14