Aktuelle Zeit abrufen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 58 von 68.
Wenn Sie in Ihren Go-Programmen mit Daten und Zeiten arbeiten, müssen Sie das integrierte time-Paket von Go verwenden. Dieses Paket bietet alle Funktionen, die Sie für die Arbeit mit zeitbezogenen Operationen benötigen.
Der häufigste Ausgangspunkt ist das Abrufen der aktuellen Zeit. Go macht dies mit der Funktion time.Now() einfach:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
}Die Funktion time.Now() gibt ein time.Time-Objekt zurück, das den aktuellen Zeitpunkt darstellt. Wenn Sie dieses Objekt ausgeben, zeigt es das Datum und die Uhrzeit in einem lesbaren Format an, einschließlich der Zeitzoneninformationen.
Dieses time.Time-Objekt enthält alle Informationen über diesen spezifischen Moment – das Jahr, den Monat, den Tag, die Stunde, die Minute, die Sekunde und sogar Nanosekunden. Sie werden dies als Grundlage für alle anderen Zeitoperationen in Go verwenden.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachErstellen Sie eine Zeiterfassungsanwendung, die die aktuelle Zeit erfasst und in mehreren Formaten anzeigt. Diese Herausforderung testet Ihre Fähigkeit, die Funktion time.Now() zu verwenden und mit time.Time-Objekten zu arbeiten, um verschiedene Komponenten des aktuellen Augenblicks zu extrahieren.
Sie erhalten eine Eingabe:
- Einen String, der Anzeigeformat-Anfragen enthält, die durch Kommas getrennt sind, im Format
"format1,format2,format3"(z. B."full,date,time,year,month,day")
Ihre Aufgabe ist es:
- Verwenden Sie
time.Now(), um die aktuelle Zeit zu erfassen und in einer Variablen zu speichern - Zeigen Sie den Anwendungs-Header an:
"=== TIME TRACKER APPLICATION ===" - Zeigen Sie die Bestätigung der Zeitstempelerfassung an:
"Current time captured successfully" - Verarbeiten Sie die Eingabe, indem Sie sie an den Kommas aufteilen, um die einzelnen Formatanfragen zu erhalten
- Zeigen Sie den Formate-Header an:
"Displaying time in requested formats:" - Zeigen Sie für jede Formatanfrage die Zeitinformationen gemäß dem angegebenen Format an:
- Für
"full": Zeigen Sie"Full timestamp: [complete_time_object]"an - Für
"date": Zeigen Sie"Date only: [year]-[month]-[day]"an (verwenden Sie die Komponenten der Date()-Methode) - Für
"time": Zeigen Sie"Time only: [hour]:[minute]:[second]"an (verwenden Sie die Methoden Hour(), Minute(), Second()) - Für
"year": Zeigen Sie"Year: [year_value]"an (verwenden Sie die Methode Year()) - Für
"month": Zeigen Sie"Month: [month_name]"an (verwenden Sie die Methode Month()) - Für
"day": Zeigen Sie"Day: [day_value]"an (verwenden Sie die Methode Day()) - Für
"weekday": Zeigen Sie"Weekday: [weekday_name]"an (verwenden Sie die Methode Weekday()) - Für
"unix": Zeigen Sie"Unix timestamp: [unix_seconds]"an (verwenden Sie die Methode Unix())
- Für
- Zählen und zeigen Sie Statistiken an:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Zeigen Sie zusätzliche Zeitdetails an:
"Additional time details:""- Nanoseconds: [nanosecond_value]"(verwenden Sie die Methode Nanosecond())"- Location: [timezone_location]"(verwenden Sie die Methode Location())"- Is zero time: [true_or_false]"(verwenden Sie die Methode IsZero())
- Zeigen Sie die Abschlussmeldung an:
"Time tracking completed - all requested formats processed"
Verwenden Sie das Paket time, um mit Zeitobjekten zu arbeiten, das Paket strings, um den Eingabestring aufzuteilen, und das Paket fmt für die formatierte Ausgabe. Denken Sie daran, dass time.Now() ein time.Time-Objekt zurückgibt, das alle Informationen über den aktuellen Moment enthält, und Sie spezifische Komponenten mit den verschiedenen für dieses Objekt verfügbaren Methoden extrahieren können. Diese Herausforderung zeigt, wie man die aktuelle Zeit erfasst und verschiedene Informationen aus einem einzigen time.Time-Objekt extrahiert.
Spickzettel
Um mit Daten und Zeiten in Go zu arbeiten, importieren Sie das time-Paket:
import "time"Rufen Sie die aktuelle Zeit mit time.Now() ab:
now := time.Now()
fmt.Println(now)Die Funktion time.Now() gibt ein time.Time-Objekt zurück, das den aktuellen Moment darstellt, einschließlich Jahr, Monat, Tag, Stunde, Minute, Sekunde, Nanosekunden und Zeitzoneninformationen.
Extrahieren Sie spezifische Komponenten aus einem time.Time-Objekt mithilfe von Methoden:
now := time.Now()
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
weekday := now.Weekday()
unix := now.Unix()
location := now.Location()
isZero := now.IsZero()Probier es selbst
package main
import (
"fmt"
"strings"
"time"
)
func main() {
// Eingabe lesen
var formatRequests string
fmt.Scanln(&formatRequests)
// Eine feste Zeit für eine konsistente Ausgabe verwenden (Go-Referenzzeit)
// Anstelle von time.Now() time.Date für vorhersagbare Ergebnisse verwenden
currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
// Formatanfragen aufteilen
formats := strings.Split(formatRequests, ",")
// TODO: Schreiben Sie Ihren Code unten
// Anwendungs-Header anzeigen
// Bestätigung der Zeitstempelerfassung anzeigen
// Formate-Header anzeigen
// Jede Formatanfrage verarbeiten und entsprechend anzeigen
// Eine Map verwenden, um eindeutige Komponenten für die Zählung zu verfolgen
// Richtige Formatierung verwenden (z. B. %02d für mit Nullen aufgefüllte Zahlen)
// Zusammenfassende Statistiken anzeigen
// Zusätzliche Zeitdetails anzeigen
// Abschlussmeldung anzeigen
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen7Fehlerbehandlung im Detail
Benutzerdefinierte FehlertypenFehler-Wrapping mit `%w`Unwrapping mit `errors.Is`Unwrapping mit `errors.As``panic` verstehen`recover` verwendenZusammenfassung – Sichere Division10Arbeiten mit Zeit
Aktuelle Zeit abrufenEinen bestimmten Zeitpunkt erstellenZeit formatierenZeit-Strings parsenZeitdauerZeitarithmetikSleeping und TickerZusammenfassung – Einfacher Timer2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und Verhalten