Dapatkan waktu saat ini sebagai string yang diformat di Go?


Jawaban:


149

Gunakan time.Now()fungsi dan time.Format()metode.

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

mencetak 20110504111515, atau setidaknya beberapa menit yang lalu. (Saya pada Waktu Siang Timur.) Ada beberapa format waktu yang telah ditentukan sebelumnya dalam konstanta yang ditentukan dalam paket waktu.

Anda dapat menggunakan time.Now().UTC()jika Anda lebih memilih UTC daripada zona waktu lokal Anda.


15
Saya pasti suka Kitchenkonstanta ( = "3:04PM")
tux21b

5
Terima kasih untuk info itu. Bagaimana paket waktu tahu dari melewati "20060102150405", hanya apa yang kami lewati, karena itu bukan salah satu dari konstanta yang telah ditentukan sebelumnya dalam paket waktu? Apa pentingnya tanggal dan waktu itu dalam paket waktu (20060102150405)? Tampaknya sedikit aneh bagi saya, tetapi selama itu berfungsi saya kira itu tidak masalah asalkan kita tidak membuat kesalahan ketika mengkodekannya. Saya kira mereka tidak ingin memberikan konstanta untuk format itu, dan cocok dengan pola string.
brianoh

9
@brianoh: Lihat golang.org/pkg/time/#Constants Inilah waktunya "01/02 03:04:05 PM '06 -0700" Karena setiap komponen memiliki angka yang berbeda (1, 2, 3, dll.), itu dapat menentukan dari angka-angka komponen apa yang Anda inginkan.
newacct

1
Harap perhatikan bahwa waktu.LocalTime () tidak ada lagi: lihat jawaban saya di bawah ini agar kompatibel dengan Go 1.0.3
Deleplace

71

Semua respons lain sangat salah bagi seseorang yang datang dari google dan mencari "timestamp in go"! YYYYMMDDhhmmss bukan "timestamp".

Untuk mendapatkan "stempel waktu" dari sebuah tanggal dalam perjalanan (jumlah detik dari Januari 1970), fungsi yang benar adalah .Unix () , dan itu benar-benar mengembalikan bilangan bulat


8
Saya setuju; pertanyaannya harus berjudul "tanggal saat ini" bukan "cap waktu saat ini"
developerbmw

1
Meskipun terlambat, saya pikir .Unix () harus mengarah ke golang.org/pkg/time/#Time.Unix yang tipe pengembaliannya int64.
Dilahirkan gratis

Meskipun secara teknis Anda benar, saya pikir banyak coders hari ini mengacaukan stempel waktu dengan, 'Waktu saat ini dalam bentuk yang diformat', sehingga judul akan sama membingungkan bagi kebanyakan orang.
Roger Hill

Saya telah menyarankan hasil edit - Get current time as formatted string in Go?. Semoga seseorang akan menyetujuinya.
akki


32

Gunakan fungsi time.Now () dan time.Format () (karena time.LocalTime () tidak ada lagi pada Go 1.0.3)

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

Demo online (dengan tanggal yang ditetapkan di masa lalu di taman bermain, apalagi)


6
Dan Anda dapat menggunakannya hanya sebagai string seperti ini:s := "Actual time is: "+time.Now().String()
Michael



0

https://golang.org/src/time/format.go ditentukan Untuk waktu penguraian 15digunakan untuk Jam, 04digunakan untuk menit, 05untuk detik.

Untuk parsing Tanggal 11, Jan, Januaryadalah untuk bulan, 02, Mon, Mondayuntuk Hari bulan, 2006untuk tahun dan tentu saja MSTuntuk zona

Tetapi Anda dapat menggunakan tata letak ini juga, yang menurut saya sangat sederhana. "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

DEMO


-4

Untuk menjawab pertanyaan yang tepat:

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

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

Terima kasih Suran, ini berguna ketika cap waktu harus dikirim melintasi grpc
rajeshk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.