Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan Permulaan Hari Tempatan di Go?

Bagaimana untuk Mendapatkan Permulaan Hari Tempatan di Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-11 02:47:03576semak imbas

 How to Get the Local Start of Day in Go?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn