yyyyMMddHHmmss形式を使用して現在の時刻をフォーマットする方法は?


118

このフォーマットを使用して現在の時刻をフォーマットしようとしていますyyyyMMddHHmmss

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

それは出力しています:

yyyyMMddHHmmss

助言がありますか?


以下は、日付のフォーマットがどのように機能するかの遊び場のサンプルです。これは文字列を時間に変換することと、特定の形式で時間を出力することの両方です。play.golang.org/p/qK6_9KNJNx
Nitesh

回答:


241

使用する

fmt.Println(t.Format("20060102150405"))

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
)

56
実際には、golang形式は非常に奇妙です。なぜyyyymmddHHiissスタイルを使用しないで、「2006/01/02/15/04/05」を使用してください。本当の理由は
わかり

11
レイアウト文字列は、1月2日15:04:05 2006 MSTのタイムスタンプを表しています。この値を覚える簡単な方法は、この順序で提示されたときに、値を保持することです(上記の要素に合わせて):1 2 3 4 5 6 -7 golang.org/src/time/example_test.go
kakilangit

28
米国外の人々のためのニーモニックテクニック:15:04からわずか5秒後の2006年1月2日に何をしていたかを想像しますが、それがブルキナファソ(UTC -7)で起こっていることを想像してください。次回、日付をフォーマットする必要があるときは、この特定のイベント(!)を覚えておいてください
Enrico

3
便利なシーケンシャルニーモニックは知りませんでしたが、なぜ2月1日ではないのですか?
silasdavis

4
だから覚えておくべきことは、日付を月日年の順に並べ、その真ん中に時刻を入れ、年の後にタイムゾーンを入れるだけで、とても覚えやすくなります。きちんと。誰もがこのニーモニックの順序を思い出すためのニーモニックを手に入れた。
Joey Sabey

20

「golangの現在の時刻形式」が見つかった場合、この質問はGoogle検索の上部に表示されます。そのため、別の形式を使用したいすべての人にとって、いつでも呼び出すことができます。

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

たとえば、現在の日時を「YYYY-MM-DDTHH:MM:SS」(たとえば、2019-01-22T12:40:55)として取得するには、fmt.Sprintfで次のメソッドを使用できます。

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

いつものように、ドキュメントが学習の最良のソースであることを覚えておいてくださいhttps : //golang.org/pkg/time/


4

GolangのTimeパッケージには、一見の価値があるメソッドがいくつかあります。

func(Time)Format

func(t Time)Format(layout string)string Formatは、レイアウトに従ってフォーマットされた時間値のテキスト表現を返します。これは、参照時間を示すことでフォーマットを定義し、

1月2日月曜日15:04:05 -0700 MST 2006が値の場合は表示されます。これは、必要な出力の例として機能します。同じ表示ルールが時間の値に適用されます。定義済みのレイアウトANSIC、UnixDate、RFC3339などは、基準時間の標準的で便利な表現を記述しています。参照時間の形式と定義の詳細については、ANSICのドキュメントおよびこのパッケージで定義されているその他の定数を参照してください。

ソース(http://golang.org/pkg/time/#Time.Format

レイアウトを定義する例も見つけました(http://golang.org/src/pkg/time/example_test.go

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }

4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

与える:

>> 2014-11-12 11:45:26.371 +0000 UTC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.