Membandingkan Tarikh dan Masa dalam Go
Apabila mengisih data berdasarkan tarikh dan masa, adalah penting untuk melakukan perbandingan yang tepat. Go menyediakan pilihan yang mantap untuk manipulasi tarikh dan masa melalui pakej masanya.
Pakej masa menawarkan beberapa kaedah untuk perbandingan segera: Sebelum, Selepas dan Sama. Dengan membandingkan dua detik masa, anda boleh mewujudkan hubungan temporal mereka. Selain itu, kaedah Sub mengira Tempoh antara dua saat, manakala kaedah Tambah membolehkan anda menambah Tempoh ke Masa, menghasilkan Masa baharu.
Perbandingan Segera Masa
Sebagai contoh, pertimbangkan contoh berikut:
package main import ( "fmt" "time" ) func main() { start, _ := time.Parse(time.RFC822, "01 Jan 15 10:00 UTC") end, _ := time.Parse(time.RFC822, "01 Jan 16 10:00 UTC") in, _ := time.Parse(time.RFC822, "01 Jan 15 20:00 UTC") out, _ := time.Parse(time.RFC822, "01 Jan 17 10:00 UTC") if in.Before(end) && in.After(start) { fmt.Println(in, "is between", start, "and", end, ".") } if !in.Before(end) || !in.After(start) { fmt.Println(out, "is not between", start, "and", end, ".") } }
Dalam contoh ini, kami menghuraikan dua detik masa, mula dan tamat, mewakili julat masa. Kami kemudian menghuraikan dua detik masa tambahan, masuk dan keluar, untuk memeriksa sama ada ia berada dalam julat yang ditentukan. Dengan membandingkan sesaat menggunakan kaedah Sebelum dan Selepas, kami boleh mengesahkan sama ada masa tertentu berada dalam selang masa yang dikehendaki.
Pengesahan Julat Masa
Dalam kes di mana tarikh julat merentas hari, seperti yang dinyatakan dalam soalan, anda mungkin perlu mempertimbangkan semakan tambahan. Berikut ialah contoh yang menunjukkan cara mengendalikan senario sedemikian:
package main import ( "fmt" "time" ) func inTimeSpan(start, end, check time.Time) bool { if start.After(end) { return check.After(start) || check.Before(end) } return check.After(start) && check.Before(end) } func main() { start, _ := time.Parse(time.RFC822, "01 Jan 15 22:00 UTC") end, _ := time.Parse(time.RFC822, "01 Jan 16 04:59 UTC") in, _ := time.Parse(time.RFC822, "01 Jan 16 02:00 UTC") out, _ := time.Parse(time.RFC822, "01 Jan 17 10:00 UTC") if inTimeSpan(start, end, in) { fmt.Println(in, "is within the time range from", start, "to", end, ".") } if !inTimeSpan(start, end, out) { fmt.Println(out, "is not within the time range from", start, "to", end, ".") } }
Dalam contoh ini, fungsi inTimeSpan mengendalikan julat masa yang merentas hari dengan mempertimbangkan kemungkinan masa mula mungkin lebih besar daripada masa tamat. Ia melaraskan perbandingan dengan sewajarnya dan menentukan dengan tepat sama ada masa semakan berada dalam julat masa yang ditentukan.
Dengan menggunakan pakej masa dan kaedahnya untuk perbandingan tarikh dan masa, anda boleh memesan dan menapis data dengan berkesan berdasarkan masa dan selang tarikh dalam Pergi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan dan Mengesahkan Julat Tarikh dan Masa dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!