Help us understand the problem. What is going on with this article?

Golangでの日付のフォーマット指定の方法について

More than 3 years have passed since last update.

Golangで単純に日付のフォーマットに変更しようとしただけなんですがちょっとハマったのでそのメモです。(以下では、packageimportは適切に宣言されているものとして説明をします。)

例えば、今日の日付を特定のフォーマットに変更する場合をRubyとGolangとを比較して説明します。

Rubyの場合

Rubyで日付のフォーマットを変更するには以下のように、%から始まる指定されたフォーマットに従って変換されます。

# 2015-06-12 00:50:19 +0900
Time.now
# 2015-06-12
Time.now.strftime("%Y-%m-%d") 

Golangの場合

一方、Golangでは特定の文字列で指定されたフォーマットに従って変換されます。

// 2015-06-12 00:17:10.467238206 +0900 JST
time.Now()
// 2015-06-12
time.Now().Format("2006-01-02")

フォーマットとして指定できるものは以下の通りです。日付のフォーマットに関するより詳しいことは、Source file src/time/format.goに書かれています。

const (
    stdLongMonth      = "January"
    stdMonth          = "Jan"
    stdNumMonth       = "1"
    stdZeroMonth      = "01"
    stdLongWeekDay    = "Monday"
    stdWeekDay        = "Mon"
    stdDay            = "2"
    stdUnderDay       = "_2"
    stdZeroDay        = "02"
    stdHour           = "15"
    stdHour12         = "3"
    stdZeroHour12     = "03"
    stdMinute         = "4"
    stdZeroMinute     = "04"
    stdSecond         = "5"
    stdZeroSecond     = "05"
    stdLongYear       = "2006"
    stdYear           = "06"
    stdPM             = "PM"
    stdpm             = "pm"
    stdTZ             = "MST"
    stdISO8601TZ      = "Z0700"  // prints Z for UTC
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)

最後に

自分はRubyのようなフォーマットの指定に慣れていたのでGolangのこの指定方法はちょっと気持ちわるいなと思ってしまいました。なんでこのような分かりにくいものになっているんでしょうか?それともこれが普通なんですかね。もしもこの理由を知っている方がいたら教えてください。

参照

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした