Goで現在の時刻をフォーマットされた文字列として取得しますか?


回答:


149

time.Now()関数とtime.Format()メソッドを使用します。

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

印刷する20110504111515か、少なくとも数分前に印刷しました。(私は東部夏時間にいます。)timeパッケージで定義されている定数には、いくつかの事前定義された時刻形式があります。

time.Now().UTC()ローカルタイムゾーンではなくUTC を使用する場合に使用できます。


15
私は間違いなくKitchen定数(= "3:04PM")が好きです
tux21b

5
その情報をありがとう。"20060102150405"は、timeパッケージ内の事前定義された定数の1つではないため、渡されたものだけを渡します。タイムパッケージ(20060102150405)の日付と時刻の意味は何ですか?少し奇妙に思えますが、機能する限り、コーディング時にエラーが発生しない限り問題ではないと思います。彼らはそのフォーマットの定数を提供し、文字列パターンと一致するのに適しているとは思わなかったと思います。
brianoh、2011

9
@brianoh:参照golang.org/pkg/time/#Constantsは、各成分が異なる数(1、2、3、等)を有しているので、時間"01/02午前3時04分05秒PM '06 -0700"でありますそれはあなたが欲しいコンポーネントを数から決定することができます。
newacct

1
time.LocalTime()はもう存在しないことに注意してください。以下の私の回答を参照して、Go 1.0.3と互換性があるようにしてください
Deleplace

71

他のすべての応答は、グーグルから来て、「タイムスタンプインゴー」を探している誰かにとって非常にミスリードです!YYYYMMDDhhmmssは「タイムスタンプ」ではありません。

goの日付の「タイムスタンプ」(1970年1月からの秒数)を取得するには、正しい関数は.Unix()であり、実際には整数を返します


8
同意する; 質問のタイトルは「現在のタイムスタンプ」ではなく「現在の日付」にする必要があります
developerbmw

1
遅いですが、.Unix()は戻り値の型がint64であるgolang.org/pkg/time/#Time.Unixを指す必要があると思います。
bornfree 2018

あなたは技術的に正しいですが、最近の多くのコーダーはタイムスタンプを「フォーマットされた形式の現在時刻」と混同しているので、タイトルはほとんどの人にとって同じように混乱するでしょう。
Roger Hill

編集を提案しました- Get current time as formatted string in Go?。うまくいけば、誰かがそれを承認するでしょう。
akki

56

読みやすくするために、時間パッケージでRFC定数を使用するのが最善です(私は考えています)。

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}

4
これはYYYYMMDDhhmmssをどのように生成しますか?
ロッド

2
RFC850はTuesday, 10-Nov-09 23:00:00 UTC RFC3339 = "2006-01-02T15:04:05Z07:00" play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeを作成します
Chris McKee

32

使用time.Now()time.Format() ()time.LocalTime などを(ゴー1.0.3のようもはや存在しない)機能

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

オンラインデモ (遊び場で過去の日付が固定されているため、気にしないでください)


6
そして、あなたは、単にこのような文字列として使用することができます:s := "Actual time is: "+time.Now().String()
マイケル・



0

https://golang.org/src/time/format.goの指定解析に15は、時間04は時間に使用され、分05は秒に使用されます。

日付を解析するために11JanJanuary数ヶ月のために、である02MonMonday月の日のため、2006年のために、そしてもちろんのMSTゾーンについて

しかし、このレイアウトを使用することもできます。これは非常に簡単だと思います。 "Mon Jan 2 15:04:05 MST 2006"

    const layout = "Mon Jan 2 15:04:05 MST 2006"
    userTimeString := "Fri Dec 6 13:05:05 CET 2019"

    t, _ := time.Parse(layout, userTimeString)
    fmt.Println("Server: ", t.Format(time.RFC850))
    //Server:  Friday, 06-Dec-19 13:05:05 CET

    mumbai, _ := time.LoadLocation("Asia/Kolkata")
    mumbaiTime := t.In(mumbai)
    fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
    //Mumbai:  Friday, 06-Dec-19 18:35:05 IST

デモ


-4

正確な質問に答えるには:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

Suranに感謝します。これは、タイムスタンプをgrpc経由で送信する必要がある場合に便利です
rajeshk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.