time
time paketi zaman ve takvim ile ilgili fonksiyonlar ve metodlar sağlar.
time.Now() fonksiyonu ile mevcut zamanı alabilirsiniz
func Now() Timenow := time.Now()
fmt.Println(now)
//2022-11-17 10:00:18.6983438 +0800 CST m=+0.007095001Dönüş veri tipi Time struct'ıdır, oldukça fazla zaman işlem metodu içerir.
func (t *Time) nsec() int32 //Nanosaniye
func (t *Time) sec() int64 //Saniye
func (t *Time) unixSec() //Unix zaman formatında saniyeyi döndürür
func (t *Time) addSec(d int64) //Saniye ekle
func (t *Time) setLoc(loc *Location) //Bölge ayarla
func (t *Time) stripMono() //Zamanın monoton saat okumasını kaldır
func (t Time) After(u Time) //Bir zamanın ondan sonra olup olmadığını kontrol et
func (t Time) Before(u Time) bool //Bir zamanın ondan önce olup olmadığını kontrol et
func (t Time) Equal(u Time) bool //İki zamanın aynı anı temsil edip etmediğini kontrol et
func (t Time) Sub(u Time) Duration //İki zaman arasındaki farkı hesapla
func (t Time) Add(d Duration) Time //Bir zaman aralığı ekleZaman Birimleri
time paketi temel zaman birimi sabitlerini içerir
const (
minDuration Duration = -1 << 63
maxDuration Duration = 1<<63 - 1
)
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)Tipleri time.Duration'dır, en küçük birim nanosaniye, en büyük birim saattir.
Biçimlendirme
Zaman tipi biçimlendirilmiş olarak çıktı verilebilir, ancak Go'da biçimlendirme şablonunun yaygın yyyy-mm-dd gibi olmadığını unutmayın, Go'nun oluşum zamanı şablon olarak kullanılır. Go'nun oluşum zamanı 2006 yılı Ocak ayı 2. günü öğleden sonra 15:04'tür.
Örnek
now := time.Now()24 saat formatında çıktı
fmt.Println(now.Format("2006-01-02 15:04:05 Monday Jan"))
//2022-11-17 10:44:48 Thursday NovSadece tarih çıktısı
fmt.Println(now.Format("2006-01-02"))
//2022-11-17Sadece 12 saat formatında zaman çıktısı
fmt.Println(now.Format("15:04:05 PM"))
//10:48:47 AMZaman Ayrıştırma
Genellikle bir string zamanı belirli bir formatta Go'nun zaman struct'ına dönüştürme ihtiyacımız olur, şimdi yapacağımız şey bu.
func main() {
location, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
fmt.Println(err)
return
}
inLocation, err := time.ParseInLocation("2006/01/02", "2012/10/12", location)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(inLocation.String())
}Son çıktı
2012-10-12 00:00:00 +0800 CSTTimer
Timer bir zamanlayıcıdır, bir channel'ı dışa açar, belirtilen zaman geldiğinde channel mesaj alır ve kapanır.
func NewTimer(d Duration) *Timertime.NewTimer() ile yeni bir zamanlayıcı oluşturabilirsiniz
func main() {
timer := time.NewTimer(time.Second)
defer timer.Stop()
select {
case t := <-timer.C:
fmt.Println(t)
}
}2023-09-25 21:25:03.5696803 +0800 CST m=+1.007908001Timer'ı kullandıktan sonra zamanında kapatılmalıdır.
Ticker
Ticker bir periyodik zamanlayıcıdır, timer'dan farkı timer'ın bir kerelik olması, Ticker'ın ise periyodik olarak tetiklenmesidir.
func NewTicker(d Duration) *Tickertime.NewTicker() ile yeni bir zamanlayıcı oluşturabilirsiniz
func main() {
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for i := 0; i < 3; i++ {
select {
case t := <-ticker.C:
fmt.Println(t)
}
}
}2023-09-25 21:29:20.4429256 +0800 CST m=+1.009508401
2023-09-25 21:29:21.4512075 +0800 CST m=+2.017790301
2023-09-25 21:29:22.4501592 +0800 CST m=+3.016742001Aynı şekilde, ticker'ı kullandıktan sonra zamanında kapatılmalıdır.
sleep
time.Sleep() mevcut goroutine'in belirli bir süre için askıya alınmasını sağlar, bu süre zarfında goroutine engellenecektir, çalıştırma durumuna dönene kadar.
func Sleep(d Duration)func main() {
start := time.Now()
fmt.Println(start)
time.Sleep(time.Second * 2)
end := time.Now()
fmt.Println(end)
}2023-09-25 21:36:35.7229057 +0800 CST m=+0.001627901
2023-09-25 21:36:37.7347742 +0800 CST m=+2.013496401Yukarıdaki program start çıktı verdikten sonra iki saniye engellenecek, ardından end çıktı verecektir.
