Zaman ve tarih, zaman yönetimi yardımcı programlarından web uygulamalarına kadar birçok yazılımın önemli bileşenleridir. Bir programcı olarak, hangi dili kullanırsanız kullanın, saati ve tarihi nasıl değiştireceğinizi bilmeniz gerekir.

Go'da, zaman paket, saat ve tarih işleme işlevlerini bir araya getirir. Bu işlevlere, herhangi bir kaynak dosyadan, o paketi içe aktararak erişebilirsiniz.

Peki, saat ve tarihi değiştirmek ne anlama geliyor ve Go'da saat ve tarihi nasıl değiştirebilirsiniz?

Saat ve Tarih Manipülasyonu Nedir?

Programınızın gereksinimlerine göre, saatlerin ve tarihlerin davranışını veya temsilini kontrol etmesi, yönetmesi veya ayarlaması gerekebilir.

Farklı programlama dilleri zaman ve tarih manipülasyonu için kendi işlevlerine sahiptir. Go dili, bu amaç için yararlı olan kapsamlı yeteneklere sahiptir.

Saat ve tarih manipülasyonu şunları içerebilir:

  • Bir yerin veya saat diliminin geçerli saatini alma.
  • Saat ve tarihlerde aritmetik işlemler yapmak.
  • Saat ve tarihlerin giriş/çıkış biçimini değiştirme.
instagram viewer

Go uygulamalarınızda saat ve tarihi değiştirmeye başlamak için zaman paketi, kullandığınız diğer paketlerin yanında.

içe aktarmak (
"fmt"
"zaman"
)

Go'da Geçerli Saat ve Tarih Nasıl Alınır

Zaman manipülasyonu için yaygın bir kullanım durumu, mevcut yerel saati veya belirli bir saat dilimi veya konumun geçerli saatini elde etmektir.

Yerel saatinizde veya belirli bir saat diliminde veya konumda saati ve tarihi almak için, zaman. Şimdi() ve zaman. YükKonumu() fonksiyonlar:

işlev ana(){
// Geçerli saati ve tarihi Yerel saatte al
benimZamanım := benim. Şimdi()
fmt. Yazdır("Şu anki saat ", zamanım. Konum(), " dır-dir: ", zamanım)

// Yerel saati almanın başka bir yolu
konum, _ := zaman. YükKonumu("Yerel") // veya zaman. YükKonumu("")
fmt. Yazdır("Şu anki saat ", yer, " dır-dir: ", zaman. Şimdi().In (konum))

// başka bir yer
konum, _ = zaman. YükKonumu("Amerika/New_York")
fmt. Yazdır("Şu anki saat ", yer, " dır-dir: ", zamanım. (konum))

// Dağ Saat Dilimi'nde (MST) geçerli saati al
konum, _ = zaman. YükKonumu("MST")
fmt. Yazdır("Şu anki saat ", yer, " dır-dir: ", zamanım. (konum))
}

Yukarıdaki programı çalıştırarak git filename.go'yu çalıştır terminalde aşağıdaki çıktıyı üretir:

LoadLocation yöntemi, her konum ve saat dilimi kısaltmasını desteklemez. Göre Belgelere git, yalnızca şuradaki konumları destekler: IANA.org veritabanı.

Belirli Bir Tarihten Ayrı Bileşenler Nasıl Alınır

Zaman damgasının her bir bileşenini, ne zaman olduğuna benzer şekilde ayrı ayrı alabilirsiniz. JavaScript'te saat ve tarihlerle çalışma.

Go's kullanarak bunu başarmanın sayısız yolu vardır. zaman fonksiyonlar. Bu bölüm her yöntemi gösterir.

kullanabilirsiniz Tarih() gün, ay ve yılı alma işlevi ve Saat() saat, dakika ve saniye alma işlevi. Örneğin:

işlevana() {
myTime := zaman. Şimdi();
yıl, ay, gün := myTime. Tarih()
fmt. Println("Yıl:", yıl)
fmt. Println("Ay :", ay)
fmt. Println("Gün:", gün)

saat, dakika, saniye := benimZamanım. Saat()
fmt. Println("Saat :", saat)
fmt. Println("Dakika :", dk)
fmt. Println("Saniye :", sn)
}

Çıktı, zaman damgasının farklı bölümlerini gösterir:

Ayrıca, zaman damgasının birimlerini ayrı ayrı da alabilirsiniz. zaman her biri için işlevler:

işlevana() {
myTime := zaman. Şimdi()

// her birimi Yıldan Nanosaniyeye al
fmt. Println("Yıl :", Zamanım. Yıl())
fmt. Println("Ay :", myTime. Ay())
fmt. Println("Gün :", benim Zamanım. Gün())
fmt. Println("Saat :", myTime. Saat())
fmt. Println("Dakika :", Zamanım. Dakika())
fmt. Println("Saniye :", myTime. İkinci())
fmt. Println("Nanosaniye:", myTime. nanosaniye())
}

Çıktının gösterdiği gibi, bu ayrıca nanosaniyelere erişmenizi sağlar:

Bu noktaya kadar olan örnekler, şimdiki zamandan zaman damgası birimlerini elde etmeye odaklanmıştır. Aynı türden eylemleri, olmayan bir zaman damgasında gerçekleştirebilirsiniz. zaman. Şimdi().

Belirli bir tarihin yılını, ayını, gününü, saatini, dakikasını ve saniyesini çıkarabilirsiniz. Bunu yapmak için, ya yeni bir tarih nesnesi başlatmanız ya da tarihi bir dizgeden ayrıştırmanız gerekir:

işlevana() {
// Yıl'dan Nanosaniye'ye kadar zamanın bireysel bileşenlerini al
// belirli bir tarihten itibaren
zamanınız := zaman. Tarih(2020, 07, 1, 06, 32, 10, 0, zaman. UTC)
fmt. Println("Yıl :", sizin Zamanınız. Yıl())
fmt. Println("Ay :", sizin Zamanınız. Ay())
fmt. Println("Gün :", sizin Zamanınız. Gün())
fmt. Println("Saat :", sizin Zamanınız. Saat())
fmt. Println("Dakika :", sizin Zamanınız. Dakika())
fmt. Println("Saniye :", sizin Zamanınız. İkinci())
fmt. Println("Nanosaniye:", Zamanınız. nanosaniye())
// saat, dakika ve saniye almak için Clock() işlevini kullanma
yourHour, yourMin, yourSec := yourTime. Saat()
fmt. Println("Saat :", sizinSaatiniz)
fmt. Println("Dakika :", Dakikanız)
fmt. Println("Saniye :", saniyeniz)

// dizeden saat ve tarih al
tarihDizesi := "2020-07-0106:32:10"
düzen := "2006-01-0215:04:05" // istediğiniz çıktı formatı
zamanınız, _ = zaman. Ayrıştırma (düzen, dateString)
fmt. Println("Saatiniz: ", sizinZamanınız)
fmt. Println("Yıl :", sizin Zamanınız. Yıl())
fmt. Println("Ay :", sizin Zamanınız. Ay())
fmt. Println("Gün :", sizin Zamanınız. Gün())
fmt. Println("Saat :", sizin Zamanınız. Saat())
fmt. Println("Dakika :", sizin Zamanınız. Dakika())
fmt. Println("Saniye :", sizin Zamanınız. İkinci())
}

Bu kod aşağıdaki çıktıyı üretir:

Parse() öğesinin kullandığını unutmayın UTC tarih dizesinde bir saat dilimi belirtmezseniz varsayılan olarak.

Tarih ve Saat İle Aritmetik İşlemler Nasıl Yapılır?

Aritmetik işlemler, Go'da saat ve tarihte gerçekleştirebileceğiniz başka bir işleme türüdür. Toplama, çıkarma ve zaman farkı gibi basit işlemlerin tümü mümkündür.

Git tanımlamanıza izin verir zaman. Süre tüm zaman birimlerine sahip değerler zaman. Saat ile zaman. Nanosaniye. Bu değerleri kullanarak zaman eklemek veya çıkarmak için kullanabilirsiniz. Ekle(). Ayrıca bir Tarih ekle() 3 parametre alan işlev: toplama veya çıkarma yapmak için yıllar, aylar ve günler.

Aşağıdaki kod, bu işlevlerin kullanımını gösterir:

işlevana() {
curTime := zaman. Şimdi()
curTime = curTime. Zaman ekle. Saat) // bir saat ekler
fmt. Println("Şu anki saat: ", curTime)
yarın := curTime. Zaman ekle. Saat * 24)
fmt. Println("yarın bu saat: ", yarın)
nextWeek := curTime. Zaman ekle. Saat * 24 * 7)
fmt. Println("Gelecek hafta bu sefer: ", nextWeek)

// AddDate kullanarak (y, m, d)
sonrakiYarın := curTime. Tarih ekle(0, 0, 2)
fmt. Println("Bu sefer Gelecek yarın: ", sonrakiYarın)
nextMonth := curTime. Tarih ekle(0, 1, 0)
fmt. Println("Gelecek ay bu sefer: ", nextMonth)
FiveYearsAndOneMonthAfter := curTime. Tarih ekle(5, 1, 0)
fmt. Println("Bu sefer beş yıl ve bir ay sonra: ", beşYılveBirAySonra)
}

Hangi aşağıdaki çıktıyı üretir:

ile zamanı da çıkarabilirsiniz. Ekle() ve Tarih ekle() negatif parametreleri geçirerek. Örneğin:

işlevana() {
curTime := zaman. Şimdi()

// AddDate() kullanarak bir gün çıkar
dün := curTime. Tarih ekle(0, 0, -1)
fmt. Println("Dün bu sefer: ", dün)

// Add() kullanarak bir ayı çıkar
geçen Ay := curTime. Zaman ekle. Saat * -24 * 30)
fmt. Println("Geçen ay bu sefer: ", geçen Ay)
}

Bu çıktıyı üretir:

Kullanabilmene rağmen Ekle() ve Tarih ekle() tarihler arasındaki farkı bulmak için Go'nun Alt() biraz farklı çalışan işlev:

işlevana() {
curTime = zaman. Şimdi()
geçmiş := zaman. Tarih(2022, zaman. Aralık, 25, 12, 0, 0, 0, zaman. UTC)
fark := geçmiş. Alt (curTime)
fmt. Println("Şimdi ile geçmiş arasındaki fark: ", fark)
// farklı birimlerdeki farkı al
yıllar := int(fark. Saat() / 24 / 365)
fmt. Println("Yıllar: ", yıllar)
ay := int(fark. Saat() / 24 / 30)
fmt. Println("Aylar: ", aylar)
günler := int(fark. Saat() / 24)
fmt. Println("Günler: ", günler)
saat := int(fark. Saat())
fmt. Println("Saat: ", saat)
// fark. Dakika(), fark. Saniye(), fark. Milisaniye(), fark. Nanosaniye() ayrıca birimlerini döndürür
}

Bu kod aşağıdaki çıktıyı üretir:

Çeşitli Formatlarda Saat ve Tarih Nasıl Alınır

kullanarak birden çok formatta saat ve tarih çıktıları da alabilirsiniz. Biçim() işlev. İşte bazı yaygın biçimlendirme stilleri:

işlevana() {
curTime = zaman. Şimdi()
// yerleşik standart biçimlendirme stilleri
fmt. Println("Şu anki saat: ", curTime)
fmt. Println("RFC3339 biçimindeki geçerli saat: ", curTime. Biçim (zaman. RFC3339))
fmt. Println("RFC3339Nano formatında geçerli saat: ", curTime. Biçim (zaman. RFC3339Nano))
fmt. Println("RFC1123 formatında geçerli saat: ", curTime. Biçim (zaman. RFC1123))
fmt. Println("RFC1123Z formatında geçerli saat: ", curTime. Biçim (zaman. RFC1123Z))
fmt. Println("RFC822 formatında geçerli saat: ", curTime. Biçim (zaman. RFC822))
fmt. Println("RFC822Z formatında geçerli saat: ", curTime. Biçim (zaman. RFC822Z))
fmt. Println("RFC850 formatındaki geçerli saat: ", curTime. Biçim (zaman. RFC850))
fmt. Println("ANSIC formatında geçerli saat: ", curTime. Biçim (zaman. ANSİK))
fmt. Println("Unix formatında geçerli saat: ", curTime. Biçim (zaman. UnixTarihi))
// özel biçimlendirme stilleri
// GG-AA-YYYY SS: DD: SS
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02-01-200615:04:05"))
// AA-GG-YYYY SS: DD: SS
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("01-02-200615:04:05"))
// YYYY-AA-GG SS: DD: SS
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("2006-01-0215:04:05"))
// GG.AA.YYYY
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02.01.2006"))
// GG/AA/YYYY
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02/01/2006"))
// 01 Şubat 2006
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02 Ocak 2006"))
// 01 Şubat 2006 Pazartesi
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02 Şubat 2006 Pazartesi"))
// 01 Şubat 2006 Pzt 15:04:05
fmt. Println("Özel formatta geçerli saat: ", curTime. Biçim("02 Şubat 2006 Pzt 15:04:05"))
}

Bu farklı biçimlendirme türleri aşağıdaki çıktıyı üretir:

Go'da Saati ve Tarihi Değiştirme

Saatler ve tarihler üzerinde yapabileceğiniz manipülasyonların listesi neredeyse sonsuzdur. Başvurunuzun kapsamına bağlı olarak çok çeşitli tarih/saat işlemleri yapmanız gerekebilir.

Sahip olabileceğiniz herhangi bir kullanım durumu için, zaman paketi çok işlevseldir ve birçok yerleşik yönteme sahiptir.

Basit bir günlük planlayıcı veya görev zamanlayıcı uygulaması oluşturmak için tarih ve saat manipülasyonunu kullanabilirsiniz.