Menu
Coddy logo textTech

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.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Tarihteki 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:

  1. Bireysel olay girişlerini elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
  2. 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
  3. Sayısal dizeleri tam sayılara dönüştürün ve her olay için time.Date kullanarak bir time.Time nesnesi oluşturun (konum parametresi için time.UTC, saniye ve nanosaniye için 0 kullanın)
  4. Uygulama başlığını görüntüleyin: "=== HISTORICAL TIMELINE APPLICATION ==="
  5. Olayların yüklendiğine dair onayı görüntüleyin: "Loading historical events..."
  6. Her olay için şunu görüntüleyin: "Loaded: [event_name] - [complete_time_object]"
  7. Görüntüleme seçeneklerini elde etmek için ikinci girdiyi virgüllere göre ayırarak ayrıştırın
  8. 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
  9. 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
	
}
quiz iconKendini test et

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