Belirli Bir Zaman Oluşturma
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 59 / 68.
time.Now() size şu anki anı verirken, genellikle belirli tarih ve saatlerle çalışmanız gerekecektir. Go, belirttiğiniz herhangi bir tarih ve saati temsil eden bir time.Time nesnesi oluşturmak için time.Date fonksiyonunu sağlar.
time.Date fonksiyonu tam olarak şu sırayla yedi parametre alır: yıl, ay, gün, saat, dakika, saniye, nanosaniye ve konum. İşte temel sözdizimi:
birthday := time.Date(1990, time.March, 15, 14, 30, 0, 0, time.UTC)Go'nun aylar için time.March gibi sabitler kullandığını fark edin; bu, kodunuzu sayı kullanmaktan daha okunabilir hale getirir. Tercih ederseniz tam sayılar (1-12) da kullanabilirsiniz. Konum (location) parametresi genellikle UTC zamanı için time.UTC veya sisteminizin yerel saat dilimi için time.Local kullanır.
Bu yaklaşım, bir doğum günü, son teslim tarihi veya tarihi bir gün olsun, belirli bir anı oluşturma konusunda size tam kontrol sağlar. Sonuçta elde edilen time.Time nesnesi, tam olarak time.Now() işlevinden gelen nesne gibi çalışır ve tüm aynı zaman işlemleriyle kullanılabilir.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayTarihteki belirli tarihleri ve saatleri temsil etmek için time.Date kullanan bir tarihsel olay zaman çizelgesi uygulaması oluşturun. Bu zorluk, kesin tarihsel anlar için time.Time nesneleri oluşturma ve bunları düzenli bir formatta görüntüleme yeteneğinizi test edecektir.
İki girdi alacaksınız:
"event1:year:month:day:hour:minute,event2:year:month:day:hour:minute"formatında tarihsel olayları içeren bir dize (örneğin,"Moon Landing:1969:7:20:20:17,Berlin Wall Fall:1989:11:9:21:0")"option1,option2,option3"formatında virgülle ayrılmış görüntüleme seçeneklerini içeren bir dize (örneğin,"chronological,details,summary")
Göreviniz şunları yapmaktır:
- Bireysel olay girişlerini elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
- Her olay girişi için, olay adını, yılı, ayı, günü, saati ve dakikayı çıkarmak için iki nokta üst üste işaretine göre ayırın
- Sayısal dizeleri tam sayılara dönüştürün ve her olay için
time.Datekullanarak birtime.Timenesnesi oluşturun (konum parametresi içintime.UTC, saniye ve nanosaniye için 0 kullanın) - Uygulama başlığını görüntüleyin:
"=== HISTORICAL TIMELINE APPLICATION ===" - Olayların yüklendiğine dair onayı görüntüleyin:
"Loading historical events..." - Her olay için şunu görüntüleyin:
"Loaded: [event_name] - [complete_time_object]" - Görüntüleme seçeneklerini elde etmek için ikinci girdiyi virgüllere göre ayırarak ayrıştırın
- Her görüntüleme seçeneğini işleyin:
"chronological"için:"=== CHRONOLOGICAL ORDER ==="başlığını ve ardından tarihe göre sıralanmış (en eski önce) olayları,"[event_name]: [year]-[month]-[day] at [hour]:[minute] UTC"şeklinde gösterin"details"için:"=== DETAILED INFORMATION ==="başlığını ve ardından her olay için şunları gösterin:"Event: [event_name]"" Date: [year]-[month]-[day]"" Time: [hour]:[minute] UTC"" Weekday: [weekday_name]"" Unix timestamp: [unix_seconds]"
"summary"için:"=== TIMELINE SUMMARY ==="başlığını ve ardından şunları gösterin:"Total events: [number_of_events]""Earliest event: [earliest_event_name] ([year])""Latest event: [latest_event_name] ([year])""Time span: [years_between_earliest_and_latest] years"
"years"için:"=== EVENTS BY DECADE ==="başlığını ve ardından on yıla göre gruplandırılmış olayları,"[decade]s: [comma_separated_event_names]"şeklinde gösterin- Tamamlanma mesajını görüntüleyin:
"Historical timeline processing completed"
time.Date ile belirli tarihler oluşturmak için time paketini, girdi dizelerini ayırmak için strings paketini, dize sayılarını tam sayılara dönüştürmek için strconv paketini ve formatlı çıktı için fmt paketini kullanın. time.Date fonksiyonunun parametreleri tam olarak şu sırayla aldığını unutmayın: yıl, ay, gün, saat, dakika, saniye, nanosaniye, konum. Kronolojik olarak sıralamak için time.Time nesnelerini Before() yöntemini kullanarak karşılaştırabilirsiniz. Bu zorluk, Go'nun zaman işlevselliğini kullanarak zaman içinde belirli anların nasıl oluşturulacağını ve tarihsel verilerle nasıl çalışılacağını gösterir.
Kopya kağıdı
Belirli bir tarih ve saat için bir time.Time nesnesi oluşturmak üzere time.Date kullanın:
birthday := time.Date(1990, time.March, 15, 14, 30, 0, 0, time.UTC)time.Date fonksiyonu tam sırasıyla yedi parametre alır:
- yıl (int)
- ay (time.Month veya int 1-12)
- gün (int)
- saat (int)
- dakika (int)
- saniye (int)
- nanosaniye (int)
- konum (*time.Location)
Okunabilirlik için time.March gibi ay sabitlerini veya tam sayıları (1-12) kullanın. Yaygın konumlar time.UTC ve time.Local şeklindedir.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
"time"
)
func main() {
// Boşlukları düzgün bir şekilde işlemek için bufio.Scanner kullanarak girişi oku
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
eventsInput := scanner.Text()
scanner.Scan()
optionsInput := scanner.Text()
// Girişten etkinlikleri ayrıştır
eventEntries := strings.Split(eventsInput, ",")
// Girişten görüntüleme seçeneklerini ayrıştır
displayOptions := strings.Split(optionsInput, ",")
// TODO: Kodunuzu aşağıya yazın
// 1. İsim, yıl, ay, gün, saat, dakika bilgilerini çıkarmak için her bir etkinlik girişini ayrıştırın
// 2. Erişmeden önce parçalar (parts) diliminin yeterli öğeye sahip olup olmadığını kontrol etmeyi unutmayın
// 3. strconv.Atoi() kullanarak dize sayılarını tam sayılara dönüştürün
// 4. Her etkinlik için time.Date() kullanarak time.Time nesneleri oluşturun
// 5. Uygulama başlığını ve yükleme mesajlarını görüntüleyin
// 6. Her bir görüntüleme seçeneğini işleyin (kronolojik, detaylar, özet, yıllar)
// 7. Tamamlanma mesajını görüntüleyin
}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ışlar