0Pricing
Go Academy · Ders

time Paketinin Temelleri

Zaman, süreler ve biçimlendirmeyle çalışma

time Paketinin Temelleri, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

time.Time — Temel Tür

time paketinin temel türü time.Time türüdür. Geçerli zamanı time.Now() ile alın:

package main
import ("fmt"; "time")

func main() {
    now := time.Now()
    fmt.Println(now)              // 2024-01-15 10:30:00.123456789 +0000 UTC
    fmt.Println(now.Year())       // 2024
    fmt.Println(now.Month())      // January
    fmt.Println(now.Day())        // 15
    fmt.Println(now.Hour())       // 10
    fmt.Println(now.Minute())     // 30
    fmt.Println(now.Weekday())    // Monday
}

time.Duration

time.Duration, nanosaniye cinsinden geçen süreyi temsil eder. Okunabilirlik için türü belirtilmiş sabitleri kullanın:

package main
import ("fmt"; "time")

func main() {
    d := 2*time.Hour + 30*time.Minute + 15*time.Second
    fmt.Println(d)              // 2h30m15s
    fmt.Println(d.Hours())      // 2.504166...
    fmt.Println(d.Minutes())    // 150.25
    fmt.Println(d.Seconds())    // 9015
    fmt.Println(d.Milliseconds()) // 9015000
}

time.Add ve time.Sub

Bir zamana süre ekleyebilir veya iki zamanı çıkararak bir süre elde edebilirsiniz:

package main
import ("fmt"; "time")

func main() {
    now := time.Now()

    tomorrow := now.Add(24 * time.Hour)
    fmt.Println(tomorrow.Format("2006-01-02"))

    deadline := now.Add(30 * time.Minute)
    remaining := time.Until(deadline)  // alias for deadline.Sub(now)
    fmt.Printf("%.0f minutes left\n", remaining.Minutes())
}

Zamanları Biçimlendirme ve Ayrıştırma

Go, biçim şablonu olarak Mon Jan 2 15:04:05 MST 2006 referans zamanını kullanır (sırasıyla 1-7 değerleri):

package main
import ("fmt"; "time")

func main() {
    now := time.Now()

    // Format
    fmt.Println(now.Format("2006-01-02"))          // 2024-01-15
    fmt.Println(now.Format("02/01/2006 15:04:05")) // 15/01/2024 10:30:00
    fmt.Println(now.Format(time.RFC3339))          // 2024-01-15T10:30:00Z
    fmt.Println(now.Format(time.Kitchen))          // 10:30AM
}

time.Parse — Dizeleri Ayrıştırma

Aynı referans şablonunu kullanarak bir dizeyi time.Time türüne ayrıştırın:

package main
import ("fmt"; "time")

func main() {
    s := "2024-01-15"
    t, err := time.Parse("2006-01-02", s)
    if err != nil {
        fmt.Println("parse error:", err)
        return
    }
    fmt.Println(t.Year(), t.Month(), t.Day()) // 2024 January 15

    // Parse RFC3339 (ISO 8601):
    t2, _ := time.Parse(time.RFC3339, "2024-01-15T10:30:00Z")
    fmt.Println(t2)
}

time.Sleep ve Zamanlayıcılar

Yürütmeyi time.Sleep ile duraklatın; tek seferlik zamanlayıcılar oluşturmak için time.NewTimer kullanın:

package main
import ("fmt"; "time")

func main() {
    start := time.Now()
    time.Sleep(100 * time.Millisecond)
    fmt.Printf("slept for %v\n", time.Since(start))

    // One-shot timer
    timer := time.NewTimer(200 * time.Millisecond)
    <-timer.C  // blocks until timer fires
    fmt.Println("timer fired")
}

Tekrarlanan Olaylar için time.Ticker

time.NewTicker, düzenli aralıklarla kendi kanalına gönderim yapar:

package main
import ("fmt"; "time")

func main() {
    ticker := time.NewTicker(500 * time.Millisecond)
    defer ticker.Stop()  // always stop to avoid goroutine leak

    for i := 0; i < 3; i++ {
        t := <-ticker.C
        fmt.Println("tick at", t.Format("15:04:05.000"))
    }
}

time.Since ve time.Until

Geçen süreyi ve bir olaya kadar kalan zamanı ölçmek için kullanışlı kısayollar:

package main
import ("fmt"; "time")

func benchmark(fn func()) time.Duration {
    start := time.Now()
    fn()
    return time.Since(start)  // = time.Now().Sub(start)
}

func main() {
    d := benchmark(func() { time.Sleep(50 * time.Millisecond) })
    fmt.Printf("took %v\n", d)

    deadline := time.Now().Add(5 * time.Minute)
    fmt.Printf("%.0f minutes remaining\n", time.Until(deadline).Minutes())
}

Zaman Dilimleri

Go, zaman dilimlerini time.Location ile yönetir. Dilimleri time.LoadLocation ile yükleyin:

package main
import ("fmt"; "time")

func main() {
    utc := time.Now().UTC()
    fmt.Println(utc)

    loc, err := time.LoadLocation("America/New_York")
    if err != nil { panic(err) }
    nyTime := utc.In(loc)
    fmt.Println(nyTime)

    // Compare times — always in UTC internally
    fmt.Println(utc.Equal(nyTime)) // true — same instant
}

time.Unix — Unix Zaman Damgaları

time.Time ile Unix zaman damgaları arasında dönüşüm yapın:

package main
import ("fmt"; "time")

func main() {
    now := time.Now()
    unix := now.Unix()            // seconds since epoch
    unixMilli := now.UnixMilli()  // milliseconds
    unixNano := now.UnixNano()    // nanoseconds

    fmt.Println(unix, unixMilli, unixNano)

    // Convert back:
    t := time.Unix(unix, 0)
    fmt.Println(t.Format(time.RFC3339))
}

Kısa Kontrol

Go, biçim şablonu olarak hangi referans zamanını kullanır?

Özet: time Paketi

Özet:

  • time.Now() — geçerli zaman; alanlara .Year(), .Month() vb. ile erişilir
  • time.Duration — nanosaniye; time.Hour, time.Minute vb. kullanılır
  • t.Format(layout) / time.Parse(layout, s) — biçimlendirmede 2006-01-02 15:04:05 referans zamanı kullanılır
  • Geçen ve kalan zamanı ölçmek için time.Since / time.Until
  • Düzenli olaylar için time.NewTicker — her zaman defer Stop() kullanın

Sıkça Sorulan Sorular

“time Paketinin Temelleri” dersi ücretsiz mi?

Evet — “time Paketinin Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“time Paketinin Temelleri” dersinde ne öğreneceğim?

Zaman, süreler ve biçimlendirmeyle çalışma Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“time Paketinin Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. fmt ve strings Paketleri
  2. strconv, math ve sort
  3. time Paketinin Temelleri
  4. os ve filepath Paketleri
← Go Academy Sayfasına Dön