Dapatkan waktu saat ini sebagai string yang diformat di Go?
131
Apa cara terbaik untuk mendapatkan cap waktu saat ini di Go dan konversi ke string? Saya membutuhkan tanggal dan waktu dalam mis. Format YYYYMMDDhhmmss.
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.
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
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
56
Untuk keterbacaan, terbaik untuk menggunakan konstanta RFC dalam paket waktu (saya pikir)
Jawaban:
Gunakan
time.Now()
fungsi dantime.Format()
metode.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.sumber
Kitchen
konstanta (= "3:04PM"
)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
sumber
Get current time as formatted string in Go?
. Semoga seseorang akan menyetujuinya.Untuk keterbacaan, terbaik untuk menggunakan konstanta RFC dalam paket waktu (saya pikir)
sumber
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeGunakan fungsi time.Now () dan time.Format () (karena time.LocalTime () tidak ada lagi pada Go 1.0.3)
Demo online (dengan tanggal yang ditetapkan di masa lalu di taman bermain, apalagi)
sumber
s := "Actual time is: "+time.Now().String()
Temukan info lebih lanjut di posting ini: Dapatkan tanggal dan waktu saat ini dalam berbagai format di golang
Ini adalah rasa dari berbagai format yang akan Anda temukan di pos sebelumnya:
sumber
Sebagai gema tanggapan @ Bactisme, cara orang mengambil cap waktu saat ini (dalam milidetik, misalnya) adalah:
Sumberdaya: https://gobyexample.com/epoch
sumber
https://golang.org/src/time/format.go ditentukan Untuk waktu penguraian
15
digunakan untuk Jam,04
digunakan untuk menit,05
untuk detik.Untuk parsing Tanggal
11
,Jan
,January
adalah untuk bulan,02
,Mon
,Monday
untuk Hari bulan,2006
untuk tahun dan tentu sajaMST
untuk zonaTetapi Anda dapat menggunakan tata letak ini juga, yang menurut saya sangat sederhana.
"Mon Jan 2 15:04:05 MST 2006"
DEMO
sumber
Untuk menjawab pertanyaan yang tepat:
sumber