1: Carbon ile Başlarken

1.1 Giriş

Basit, anlamlı ve geliştirici dostu bir Golang paketi olan datetime için Carbon

Carbon'un datetime işleme kullanımının avantajları:

  • Geliştirici Dostu: Carbon, geliştiriciler için sezgisel ve ifadeci bir arayüz sunar.
  • Uluslararasılaştırma Desteği: Tarih gösterimlerinizi yerelleştirmenizi sağlayan uluslararasılaştırmayı destekler.
  • Değişmezlik: Carbon örnekleri değişmezdir, yani beklenmedik değişiklikler olmadan güvenle aktarılabilir.
  • Zaman Dilimi İşleme: Carbon, farklı zaman dilimlerinde datetime yönetim karmaşıklığını basitleştirir.
  • Kapsamlı API: Tarih ve saat oluşturma, ayrıştırma ve biçimlendirme işlemleri için kapsamlı bir dizi işlev sağlar.

1.2 Kurulum Kılavuzu

Go sürümü >= 1.16 için kurulum

Go sürümü 1.16 veya üstü için Carbon paketini kurmak için aşağıdaki komutu kullanın:

go get -u github.com/golang-module/carbon/v2

Daha sonra, paketi Go dosyanıza içe aktarın:

import "github.com/golang-module/carbon/v2"

Go sürümü < 1.16 için kurulum

Eski Go sürümleri için, Carbon'u aşağıdaki şekilde yine kurabilirsiniz:

go get -u github.com/golang-module/carbon

Ve benzer şekilde içe aktarın:

import "github.com/golang-module/carbon"

Not: v1 artık aktif bir şekilde güncellenmiyor, ancak hata düzeltmeleri için sürdürülecek.

1.3 İlk Carbon Projenizi Hazırlama

Carbon'un temel yapılandırması: Carbon kurulduktan sonra, yeni bir Carbon örneği oluşturarak kullanmaya başlayabilirsiniz. Projelerinizin ihtiyaçlarına uygun şekilde varsayılan genel düzeni, zaman dilimini ve yerel ayarı ayarlayarak Carbon'u özelleştirebilirsiniz.

Genel varsayılan düzeni, zaman dilimini ve yerel ayarları ayarlamak:

carbon.SetDefault(carbon.Default{
  Layout: carbon.RFC3339Layout,
  Timezone: carbon.PRC,
  Locale: "en",
})

Açıkça ayarlanmazsa, Carbon'un bunlar için varsayılan ayarları vardır — Layout: "2006-01-02 15:04:05", Timezone: yerel, Locale: "en".

2: Temel Carbon İşlemleri

2.1 Geçerli Zamanla Çalışma

Geçerli Tarihi ve Saati Alma

Çoğu uygulamada mevcut tarihi ve saati almak temel bir işlemdir. Carbon ile, carbon.Now() yöntemini çağırarak mevcut datetime örneğini alabilirsiniz. Mevcut datetime'i nasıl alacağımıza bakalım:

// Geçerli tarihi ve saati bir Carbon örneği olarak alır.
now := carbon.Now()

fmt.Println("Mevcut datetime:", now)

Bugünü, Dünü ve Yarını Gösterme

Carbon, mevcut güne göre tarihlerle çalışmanın zarif bir yolunu sağlar. Bugünün, dünün ve yarının datetime gösterimini almak için sırasıyla carbon.Now(), carbon.Yesterday() ve carbon.Tomorrow() yöntemlerini kullanabilirsiniz:

// Bugünün datetime'i
bugun := carbon.Now()
fmt.Println("Bugün:", bugun.ToDateTimeString())

// Dünün datetime'i
dun := carbon.Yesterday()
fmt.Println("Dün:", dun.ToDateTimeString())

// Yarının datetime'i
yarın := carbon.Tomorrow()
fmt.Println("Yarın:", yarın.ToDateTimeString())

Bu yöntemler, bu yaygın olarak kullanılan tarih referanslarıyla etkileşimde bulunmanın el ile hesaplama yapmadan özeti şekilde sağlar.

Geçerli Zamanın Biçimlendirilmesi ve Gösterimi

Carbon, datetime'i farklı biçimlendirmek ve göstermek için farklı yollar sağlar. Standart bir ISO8601 gibi bir biçim, özel bir biçim veya yerelleştirilmiş bir sürüm gerekiyorsa, Carbon'un buna uygun yöntemleri vardır.

İşte mevcut datetime'i çeşitli şekillerde nasıl biçimlendirebileceğiniz:

// Standart datetime gösterimi
fmt.Println("RFC3339:", now.ToRFC3339String())
fmt.Println("ISO8601:", now.ToIso8601String())

// Özel datetime biçimi
fmt.Println("Özel:", now.Format("Pazartesi, 02-Oca-06 15:04:05 MST"))

// Önceden tanımlanmış düzenleri kullanma
fmt.Println("ANSIC formatı:", now.ToAnsicString())
fmt.Println("UnixDate formatı:", now.ToUnixDateString())
fmt.Println("RubyDate formatı:", now.ToRubyDateString())
fmt.Println("Kitchen formatı:", now.ToKitchenString())

// Özel kalıplar için Format yöntemini kullanın
fmt.Println("Özel kalıp:", now.Format("2006-01-02 3:04 PM"))

2.2 Carbon Örnekleri Oluşturma

Zaman damgalarından örnekler oluşturma

Go'da zaman damgalarıyla uğraşmak sıkça karşılaşılan bir durumdur ve Carbon, bunları işlemek için sezgisel yöntemler sağlar. Bir zaman damgası genellikle belirli bir olayın ne zaman meydana geldiğini tanımlayan karakterlerin veya kodlanmış bilgilerin bir dizisi olup genellikle gün, saat ve bazen küçük bir saniyenin kesinliğine kadar verilen tarihi ve saati içerir.

Unix zaman damgasından (Ocak 1, 1970, UTC'de gece yarısından beri geçen saniye sayısını temsil eder) bir Carbon örneği oluşturmak için çeşitli hassasiyet seviyelerini kullanabilirsiniz:

// Saniye hassasiyetiyle belirli bir zaman damgasından bir Carbon örneği oluşturun
c1 := carbon.CreateFromTimestamp(1596604455)
fmt.Println(c1.ToString()) // Çıktı: "202-08-05 13:14:15 +080 CST"

// Daha yüksek hassasiyet için (milisaniye), `CreateFromTimestampMilli` kullanın
c2 := carbon.CreateFromTimestampMilli(1596604455999)
fmt.Println(c2.ToString()) // Çıktı: "202-08-05 13:14:15.999 +080 CST"

// Mikrosaniyeler için, `CreateFromTimestampMicro` kullanın
c3 := carbon.CreateFromTimestampMicro(1596604455999999)
fmt.Println(c3.ToString()) // Çıktı: "202-08-05 13:14:15.999999 +080 CST"

// Ve nanosaniyeler için, `CreateFromTimestampNano` kullanın
c4 := carbon.CreateFromTimestampNano(1596604455999999999)
fmt.Println(c4.ToString()) // Çıktı: "202-08-05 13:14:15.999999999 +080 CST"

Tarih ve saat bileşenlerinden örnekler oluşturma

Eğer bir tarihin bireysel bileşenleri, örneğin yıl, ay ve gün veya bir saatın bileşenleri gibi saat, dakika ve saniye, elimizde bulunuyorsa, Carbon bunları da işleyebilir.

// Sadece belirli bir tarihten bir Carbon örneği oluşturun
date := carbon.CreateFromDate(2022, 12, 25)
fmt.Println(date.ToDateString()) // Çıktı: "2022-12-25"

// Sadece belirli bir zamandan bir Carbon örneği oluşturun
time := carbon.CreateFromTime(23, 59, 59)
fmt.Println(time.ToTimeString()) // Çıktı: "23:59:59"

// Hem tarih hem de saat bileşenlerinden bir Carbon örneği oluşturun
dateTime := carbon.CreateFromDateTime(2022, 12, 25, 23, 59, 59)
fmt.Println(dateTime.ToDateTimeString()) // Çıktı: "2022-12-25 23:59:59"

2.3 Zaman Dizelerinin Ayrıştırılması

Zamanı dize olarak temsil etme işlemi yaygın bir senaryodur. Carbon, dizeyi Carbon örneklerine ayrıştırmayı kolaylaştırır.

Standart zaman formatları için carbon.Parse kullanımı:

// Tarih ve saat içeren bir dizeyi ayrıştırın
c := carbon.Parse("202-08-05 13:14:15", carbon.PRC)
if c.Error != nil {
    fmt.Printf("Hata: %v", c.Error)
} else {
    fmt.Println(c.ToDateTimeString()) // Çıktı: "202-08-05 13:14:15"
}

// RFC3339 biçimindeki bir dizeyi ayrıştırma
rfc3339 := carbon.Parse("202-08-05T13:14:15+08:00")
fmt.Println(rfc3339.ToString()) // Çıktı: "202-08-05 13:14:15 +080 CST"

ParseByFormat ve ParseByLayout ile özel formatlar

Doğrudan carbon.Parse tarafından ele alınmayan belirli bir formattaki dizeleri ayrıştırabilirsiniz.

// Bir biçime göre bir zaman dizesini Carbon örneği olarak ayrıştırın
byFormat := carbon.ParseByFormat("202|08|05 13|14|15", "2006|01|02 15|04|05")
fmt.Println(byFormat.ToDateTimeString()) // Çıktı: "202-08-05 13:14:15"

// Bir düzene göre bir zaman dizesini Carbon örneği olarak ayrıştırın
byLayout := carbon.ParseByLayout("202|08|05", "2006|01|02")
fmt.Println(byLayout.ToDateString()) // Çıktı: "202-08-05"

Hataların İşlenmesi

Ayrıştırmanın başarılı olup olmadığını kontrol etmek için her zaman Error alanını kontrol edin:

geçersizTarih := carbon.Parse("Bu bir tarih değil", carbon.PRC)
if geçersizTarih.IsInvalid() {
    fmt.Println("Tarih ayrıştırma hatası:", geçersizTarih.Error)
}

Unutmayın, tarih ve saatlerle çalışmanın sağlam hata kontrolü, beklenmeyen sonuçları veya sistem çökmelerini önlemek için kritik bir bölümüdür.