Şu Anki Zamanı Alma
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 58 / 68.
Go programlarınızda tarih ve saatlerle çalışırken, Go'nun yerleşik time paketini kullanmanız gerekecektir. Bu paket, zamanla ilgili işlemlerle çalışmak için ihtiyacınız olan tüm işlevselliği sağlar.
En yaygın başlangıç noktası geçerli zamanı almaktır. Go, time.Now() fonksiyonu ile bunu basitleştirir:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}time.Now() fonksiyonu, şu anki zamanı temsil eden bir time.Time nesnesi döndürür. Bu nesneyi yazdırdığınızda, saat dilimi bilgisi de dahil olmak üzere tarih ve saati okunabilir bir formatta görüntüler.
Bu time.Time nesnesi, o belirli an hakkındaki tüm bilgileri (yıl, ay, gün, saat, dakika, saniye ve hatta nanosaniyeler) içerir. Bunu Go'daki diğer tüm zaman işlemleri için temel olarak kullanacaksınız.
Görev
KolayGeçerli zamanı yakalayan ve bunu birden çok biçimde görüntüleyen bir zaman takip uygulaması oluşturun. Bu meydan okuma, time.Now() işlevini kullanma ve geçerli anın farklı bileşenlerini çıkarmak için time.Time nesneleriyle çalışma becerinizi test edecektir.
Bir girdi alacaksınız:
"format1,format2,format3"biçiminde, virgüllerle ayrılmış görüntüleme biçimi isteklerini içeren bir dize (ör."full,date,time,year,month,day")
Göreviniz:
- Geçerli zamanı yakalamak ve bir değişkende saklamak için
time.Now()kullanın - Uygulama başlığını görüntüleyin:
"=== TIME TRACKER APPLICATION ===" - Zaman damgası yakalama onayını görüntüleyin:
"Current time captured successfully" - Tek tek biçim isteklerini elde etmek için girdiyi virgüllere göre bölerek ayrıştırın
- Biçimler başlığını görüntüleyin:
"Displaying time in requested formats:" - Her biçim isteği için, belirtilen biçime göre zaman bilgilerini görüntüleyin:
"full"için:"Full timestamp: [complete_time_object]"görüntüleyin"date"için:"Date only: [year]-[month]-[day]"görüntüleyin (Date() yöntemi bileşenlerini kullanın)"time"için:"Time only: [hour]:[minute]:[second]"görüntüleyin (Hour(), Minute(), Second() yöntemlerini kullanın)"year"için:"Year: [year_value]"görüntüleyin (Year() yöntemini kullanın)"month"için:"Month: [month_name]"görüntüleyin (Month() yöntemini kullanın)"day"için:"Day: [day_value]"görüntüleyin (Day() yöntemini kullanın)"weekday"için:"Weekday: [weekday_name]"görüntüleyin (Weekday() yöntemini kullanın)"unix"için:"Unix timestamp: [unix_seconds]"görüntüleyin (Unix() yöntemini kullanın)
- İstatistikleri sayın ve görüntüleyin:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Ek zaman ayrıntılarını görüntüleyin:
"Additional time details:""- Nanoseconds: [nanosecond_value]"(Nanosecond() yöntemini kullanın)"- Location: [timezone_location]"(Location() yöntemini kullanın)"- Is zero time: [true_or_false]"(IsZero() yöntemini kullanın)
- Tamamlanma mesajını görüntüleyin:
"Time tracking completed - all requested formats processed"
Zaman nesneleriyle çalışmak için time paketini, girdi dizesini bölmek için strings paketini ve biçimlendirilmiş çıktı için fmt paketini kullanın. time.Now() işlevinin geçerli anla ilgili tüm bilgileri içeren bir time.Time nesnesi döndürdüğünü ve bu nesnede bulunan çeşitli yöntemleri kullanarak belirli bileşenleri çıkarabileceğinizi unutmayın. Bu meydan okuma, geçerli zamanın nasıl yakalanacağını ve tek bir time.Time nesnesinden farklı bilgi parçalarının nasıl çıkarılacağını gösterir.
Kendin dene
package main
import (
"fmt"
"strings"
"time"
)
func main() {
// Girdiyi oku
var formatRequests string
fmt.Scanln(&formatRequests)
// Tutarlı çıktı için sabit bir zaman kullan (Go'nun referans zamanı)
// time.Now() yerine, öngörülebilir sonuçlar için time.Date kullanın
currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
// Format isteklerini ayır
formats := strings.Split(formatRequests, ",")
// TODO: Kodunuzu aşağıya yazın
// Uygulama başlığını görüntüle
// Zaman damgası yakalama onayını görüntüle
// Formatlar başlığını görüntüle
// Her bir format isteğini işle ve uygun şekilde görüntüle
// Sayım için benzersiz bileşenleri takip etmek üzere bir map kullanın
// Uygun biçimlendirmeyi kullanın (örneğin, sıfır dolgulu sayılar için %02d)
// Özet istatistikleri görüntüle
// Ek zaman ayrıntılarını görüntüle
// Tamamlanma mesajını görüntüle
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme7Derinlemesine Hata Yönetimi
Özel Hata Türleri`%w` ile Hataları Sarmalama`errors.Is` ile Sarmalı Açma`errors.As` ile Sarmalı Açma`panic` Kavramını Anlamak`recover` KullanımıÖzet - Güvenli Bölme10Zamanla Çalışmak
Şu Anki Zamanı AlmaBelirli Bir Zaman OluşturmaZamanı FormatlamaZaman Dizelerini AyrıştırmaZaman SüresiZaman AritmetiğiUyutma ve Ticker'larÖzet - Basit Zamanlayıcı2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve DavranışlarKendi başına pratik yap: Online Go derleyicisi