Mencari Permulaan Hari Tempatan
Untuk mendapatkan semula objek masa permulaan hari tempatan, pendekatan biasa ialah mengekstrak komponen tahun, bulan dan hari serta bina semula tarikh. Walau bagaimanapun, adakah terdapat fungsi yang lebih ortodoks yang disediakan oleh perpustakaan standard?
Coretan berikut menunjukkan fungsi Bod tersuai yang melaksanakan tugas ini:
func Bod(t time.Time) time.Time { year, month, day := t.Date() return time.Date(year, month, day, 0, 0, 0, 0, t.Location()) }
Sementara fungsi Bod menentukan setempat dengan betul mulai hari ini, fungsi Truncate, yang dicadangkan sebagai alternatif, memberikan hasil yang berbeza. Untuk meneliti perkara ini, pertimbangkan kod berikut:
chicago, err := time.LoadLocation("America/Chicago") if err != nil { fmt.Println(err) return } now := time.Now().In(chicago) fmt.Println(Bod(now)) fmt.Println(Truncate(now))
Kod ini menjana output berikut:
2014-08-11 00:00:00 -0400 EDT 2014-08-11 20:00:00 -0400 EDT
Ia menjadi jelas bahawa kaedah Truncate beroperasi pada masa UTC, manakala fungsi Bod mengekalkan waktu tempatan (Chicago). Selain itu, Truncate menganggap hari 24 jam yang berterusan, yang tidak tepat untuk lokasi seperti Chicago yang mengalami variasi masa penjimatan siang.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Permulaan Hari Tempatan di Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!