Menu
Coddy logo textTech

Pobieranie bieżącego czasu

Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 58 z 68.

Podczas pracy z datami i godzinami w programach Go będziesz używać wbudowanego pakietu Go time. Ten pakiet zapewnia wszystkie funkcje potrzebne do wykonywania operacji związanych z czasem.

Najczęstszym punktem wyjścia jest pobranie bieżącego czasu. Go ułatwia to za pomocą funkcji time.Now():

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)
}

Funkcja time.Now() zwraca obiekt time.Time, który reprezentuje bieżący moment. Gdy wyświetlisz ten obiekt, pokaże on datę i godzinę w czytelnym formacie, wraz z informacją o strefie czasowej.

Ten obiekt time.Time zawiera wszystkie informacje o danym momencie — rok, miesiąc, dzień, godzinę, minutę, sekundę, a nawet nanosekundy. Będzie to podstawa wszystkich pozostałych operacji związanych z czasem w Go.

challenge icon

Wyzwanie

Łatwy

Utwórz aplikację do śledzenia czasu, która rejestruje bieżący czas i wyświetla go w wielu formatach. To wyzwanie sprawdzi Twoją umiejętność korzystania z funkcji time.Now() oraz pracy z obiektami time.Time w celu wyodrębniania różnych składników bieżącej chwili.

Otrzymasz jedno wejście:

  • Łańcuch znaków zawierający żądania formatów wyświetlania, oddzielone przecinkami, w formacie "format1,format2,format3" (np. "full,date,time,year,month,day")

Twoim zadaniem jest:

  1. Użyć time.Now(), aby zarejestrować bieżący czas i zapisać go w zmiennej
  2. Wyświetlić nagłówek aplikacji: "=== TIME TRACKER APPLICATION ==="
  3. Wyświetlić potwierdzenie zarejestrowania znacznika czasu: "Current time captured successfully"
  4. Przeanalizować dane wejściowe, dzieląc je po przecinkach, aby uzyskać poszczególne żądania formatów
  5. Wyświetlić nagłówek formatów: "Displaying time in requested formats:"
  6. Dla każdego żądania formatu wyświetlić informacje o czasie zgodnie z określonym formatem:
    • Dla "full": wyświetlić "Full timestamp: [complete_time_object]"
    • Dla "date": wyświetlić "Date only: [year]-[month]-[day]" (użyć składników zwracanych przez metodę Date())
    • Dla "time": wyświetlić "Time only: [hour]:[minute]:[second]" (użyć metod Hour(), Minute(), Second())
    • Dla "year": wyświetlić "Year: [year_value]" (użyć metody Year())
    • Dla "month": wyświetlić "Month: [month_name]" (użyć metody Month())
    • Dla "day": wyświetlić "Day: [day_value]" (użyć metody Day())
    • Dla "weekday": wyświetlić "Weekday: [weekday_name]" (użyć metody Weekday())
    • Dla "unix": wyświetlić "Unix timestamp: [unix_seconds]" (użyć metody Unix())
  7. Policzyć i wyświetlić statystyki:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. Wyświetlić dodatkowe szczegóły dotyczące czasu:
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (użyć metody Nanosecond())
    • "- Location: [timezone_location]" (użyć metody Location())
    • "- Is zero time: [true_or_false]" (użyć metody IsZero())
  9. Wyświetlić komunikat o zakończeniu: "Time tracking completed - all requested formats processed"

Użyj pakietu time do pracy z obiektami czasu, pakietu strings do podzielenia wejściowego łańcucha znaków oraz pakietu fmt do formatowania danych wyjściowych. Pamiętaj, że time.Now() zwraca obiekt time.Time, który zawiera wszystkie informacje o bieżącej chwili, a poszczególne składniki możesz wyodrębnić za pomocą różnych metod dostępnych dla tego obiektu. To wyzwanie pokazuje, jak zarejestrować bieżący czas i wyodrębnić różne informacje z jednego obiektu time.Time.

Spróbuj swoich sił

package main

import (
	"fmt"
	"strings"
	"time"
)

func main() {
	// Odczytaj dane wejściowe
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// Użyj stałej daty i godziny, aby uzyskać spójne wyniki (czas referencyjny Go)
	// Zamiast time.Now() użyj time.Date, aby uzyskać przewidywalne wyniki
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// Podziel żądania formatowania
	formats := strings.Split(formatRequests, ",")
	
	// TODO: Napisz swój kod poniżej
	// Wyświetl nagłówek aplikacji
	// Wyświetl potwierdzenie pobrania znacznika czasu
	// Wyświetl nagłówek formatów
	// Przetwórz każde żądanie formatowania i odpowiednio wyświetl wynik
	// Użyj mapy do śledzenia unikalnych składników na potrzeby zliczania
	// Użyj odpowiedniego formatowania (np. %02d dla liczb dopełnianych zerami)
	// Wyświetl statystyki podsumowujące
	// Wyświetl dodatkowe szczegóły dotyczące czasu
	// Wyświetl komunikat o zakończeniu
	
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online