Zaman dilimleri, tarih ve saatlerle ilgilenen herhangi bir uygulama için çok önemlidir. Elbette bu, özellikle kıtalar ve konumlardaki kullanıcılara hizmet veren uygulamalar için geçerlidir. Saat dilimleri, dünyadaki belirli konumlar için Eşgüdümlü Evrensel Saat'ten (UTC) farkı belirler. Doğru ve güvenilir zaman yönetimi sağlamada hayati bir rol oynarlar.
Go, saat ve saat dilimleriyle çalışmak için standart kitaplığında zaman paketi sağlar. Zaman paketini kullanarak çeşitli konumlardaki zaman dilimlerini getirebilir ve dönüştürebilirsiniz.
Zaman Paketi
bu zaman paket için işlevsellik sağlar zaman ve tarihlerle çalışma, artık saniye olmadan bir Gregoryen takvimi kullanarak zamanı ölçme ve görüntüleme ve tarihleri değiştirme.
Zaman paketi şunları sağlar: Zamanyapı tipi saat dilimlerini ayarlamak için kullanabileceğiniz konum alanını içerir.
Zaman paketini bir import ifadesi ile içe aktarabilirsiniz.
içe aktarmak"zaman"
İşte time yapı türü ve alanları. Alanlar dışa aktarılmamıştır, bu nedenle resmi belgelerde yer almazlar.
paket ana
tip Zaman yapı {
// duvar, runtime.nanotime() tarafından döndürülen formattaki duvar zamanıdır.
// işlev.
duvar uint64// ext, tarafından döndürülen formattaki monoton saat okumasıdır.
// çalışma zamanı.nanotime().
dahili int64// loc, bu zamanla ilişkili Location yapısına bir işaretçidir.
yer *Konum
}tip Konum yapı {
// ad, "UTC" veya "PST" gibi saat dilimi adıdır.
isim sicim// bölge, saat dilimi kısaltması, ofset hakkında bilgi içerir,
// ve konumdaki tek bir zaman dilimi için kural.
bölge [] bölge// tx, zaman dilimi kısaltmasının ne zaman yapılacağı veya
// bir konum için ofset değişiklikleri.
tx []zoneTrans// extension, eğer bu konum bir üst saat diliminin adını içeriyorsa
// başka birinden uzanır.
uzatmak sicim// cacheStart ve cacheEnd, aralığı tanımlayan Unix zaman damgalarıdır
// cacheZone alanının geçerli olduğu yer.
önbellek Başlat int64
önbellekEnd int64
// cacheZone, o an için geçerli olan bölgeye işaret eder
// cacheStart ve cacheEnd tarafından tanımlanan aralık.
önbellek Bölgesi * bölge
}
Birçok yöntem Zaman kullanır ve Konum saat dilimi yöntemleri de dahil olmak üzere yapılar.
Saat Dilimi Bilgisi Yükleniyor
Saat Dilimi Bilgilerini Yükleme, saat dilimleriyle çalışırken temel işlemlerden biridir. bu Yük Konumu yöntem, saat dilimi bilgilerinin yüklenmesi için işlevsellik sağlar. IANA Zaman Dilimi Veritabanı. bu Yük Konumu yöntem, saat diliminin adını alır ve konum bilgilerini ve işleme için bir hata döndürür. Saat dilimi bilgisini yükledikten sonra, bir zaman saat dilimiyle ilişkili yapı örneği.
içe aktarmak (
"fmt"
"zaman"
)işlevana() {
// Amerika/New_York için saat dilimi konumunu yükleyin
loc, err := zaman. Yük Konumu("Amerika/New_York")eğer hata!= sıfır {
fmt. Yazdır("Konum yüklenirken hata oluştu:", hata)
geri dönmek
}
// Bir konumdaki geçerli saati alın
şimdi := zaman. Şimdi().In (loc)
fmt. Yazdır("New York'ta şu anki saat:", Şimdi)
}
bu İçinde yöntemi Şimdi işlev bir konumu alır ve oradaki zamanı yazdırır:
Ek olarak, Sabit Bölge Konum dizesini ve saat diliminin UTC'den farkını biliyorsanız, geçerli saati bir konuma yükleme yöntemi. Öncelikle, geçerli saati UTC'ye göre yüklemeniz gerekecek ve ardından SabitZone yöntemini kullanarak konumu zamanın yöntemine geçirmeden önce dizeye ve ofsete dayalı konum misal.
içe aktarmak (
"fmt"
"zaman"
)işlevana() {
// UTC'de şimdiki zamanı al
şimdi := zaman. Şimdi().UTC()// Lagos için saat dilimini ayarla
gecikme := şimdi. Zamanında. Sabit Bölge("NE", 3600))
// Her iki konumdaki geçerli saati yazdır
fmt. Yazdır("Lagos'taki geçerli saat:", gecikmeler)
}
bu ana işlevi, Lagos'taki geçerli saati konsola yazdırır.
Zaman Dilimi Süresini Ölçme
Zaman paketi şunları sağlar: Alan ile ilişkili zaman diliminin kısaltmasını ve farkını almak için bir yöntem zaman. Zaman değer. Zone yöntemi, saat diliminin kısaltmasını temsil eden dizeyi (örneğin, "Amerika/New_York" için "EST") ve UTC'nin doğusundaki saniye sayısını temsil eden bir tamsayı döndürür.
içe aktarmak (
"fmt"
"zaman"
)işlevana() {
// Amerika/New_York için saat dilimi konumunu yükleyin
loc, err := zaman. Yük Konumu("Amerika/New_York")eğer hata!= sıfır {
fmt. Yazdır("Konum yüklenirken hata oluştu:", hata)
geri dönmek
}// UTC'deki geçerli saati ve belirtilen konumu alın
t1 := zaman. Şimdi()
t2 := t1.In (yer)// Her saat dilimi için ofseti saniye cinsinden al
//zaman dilimleri için
_, ofset1 := t1.Bölge()
_, ofset2 := t2.Bölge()// Saat dilimi kaymasının süresini hesapla
// UTC ve Amerika/New_York arasında
süre := ofset2 - ofset1
fmt. Yazdır("Zaman dilimi kaydırma süresi" +
" UTC ve New York arasında: %d saniye", süre)
}
Ana işlevde Zone yöntemi, iki zaman dilimi (time. Zaman değerleri). bu t1 değişken, UTC'deki geçerli saattir ve t2 değişkeni, "Amerika/New_York" saat dilimindeki geçerli saattir.
fonksiyon yazdırır süre saniye cinsinden zaman dilimi değişimini temsil eden değişken (zaman dilimleri arasındaki ofset farkı).
Zaman Dilimleri Arasındaki Zamanı Değerlendirme
Zaman dilimleri arasındaki süreyi biliyorsanız, zaman dilimleri arasındaki süreyi değerlendirebilirsiniz. kullanabilirsiniz Eklemek zamanınızın In yönteminin yöntemi. Bir saat dilimindeki saate süre eklemek için Time struct örneği.
içe aktarmak (
"kayıt"
"zaman"// zaman paketini içe aktar
)işlevdeğerlendirmekZaman(zaman. Süre, süre, süre. Süre)zaman.Zaman {
// Afrika/Lagos için konumu yükle
konum, hata := zaman. Yük Konumu("Afrika / Lagos")
eğer hata!= sıfır {
kayıt. Yazdır("Konum yüklenirken bir hata oluştu")
}
geri dönmek T. (konumda).Ekle (süre)
}
bu değerlendirmekZaman fonksiyon bir süre alır. Zaman örneği ve türün süresi zaman. Süre, saat dilimindeki saati döndürür. "Afrika/Lagos"taki güncel saati yükler ve saate bir süre ekler.
Zaman Paketi ile Saati ve Tarihi Değiştirin
Zaman paketi, hem saat hem de tarihlerle çalışmak için çok yönlüdür. Zaman paketi, zamanı Unix zamanına dönüştürmek için Unix(), rutinleri duraklatmak için Sleep() ve zaman değerlerini dizgeye biçimlendirmek için Format() gibi işlevler sağlar.