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 zu diesem bestimmten Zeitpunkt – das Jahr, den Monat, den Tag, die Stunde, die Minute, die Sekunde und sogar Nanosekunden. Du wirst dies als Grundlage für alle anderen Zeitoperationen in Go verwenden.
Aufgabe
EinfachErstelle eine Zeiterfassungsanwendung, die die aktuelle Zeit erfasst und in mehreren Formaten anzeigt. Diese Herausforderung testet deine Fähigkeit, die Funktion time.Now() zu verwenden und mit time.Time-Objekten zu arbeiten, um verschiedene Komponenten des aktuellen Zeitpunkts zu extrahieren.
Du erhältst eine Eingabe:
- Eine Zeichenfolge mit durch Kommas getrennten Anforderungen an Anzeigeformate im Format
"format1,format2,format3"(z. B."full,date,time,year,month,day")
Deine Aufgabe ist es:
time.Now()zu verwenden, um die aktuelle Zeit zu erfassen und in einer Variable zu speichern- Die Kopfzeile der Anwendung anzuzeigen:
"=== TIME TRACKER APPLICATION ===" - Die Bestätigung der Zeiterfassung anzuzeigen:
"Current time captured successfully" - Die Eingabe durch Aufteilen an den Kommas zu verarbeiten, um einzelne Formatanforderungen zu erhalten
- Die Kopfzeile für die Formate anzuzeigen:
"Displaying time in requested formats:" - Für jede Formatanforderung die Zeitinformationen entsprechend dem angegebenen Format anzuzeigen:
- Für
"full":"Full timestamp: [complete_time_object]"anzeigen - Für
"date":"Date only: [year]-[month]-[day]"anzeigen (die Komponenten der Methode Date() verwenden) - Für
"time":"Time only: [hour]:[minute]:[second]"anzeigen (die Methoden Hour(), Minute(), Second() verwenden) - Für
"year":"Year: [year_value]"anzeigen (die Methode Year() verwenden) - Für
"month":"Month: [month_name]"anzeigen (die Methode Month() verwenden) - Für
"day":"Day: [day_value]"anzeigen (die Methode Day() verwenden) - Für
"weekday":"Weekday: [weekday_name]"anzeigen (die Methode Weekday() verwenden) - Für
"unix":"Unix timestamp: [unix_seconds]"anzeigen (die Methode Unix() verwenden)
- Für
- Statistiken zu zählen und anzuzeigen:
"=== TIME INFORMATION SUMMARY ===""Total formats displayed: [number_of_formats]""Timestamp components extracted: [number_of_unique_components]"
- Zusätzliche Zeitdetails anzuzeigen:
"Additional time details:""- Nanoseconds: [nanosecond_value]"(die Methode Nanosecond() verwenden)"- Location: [timezone_location]"(die Methode Location() verwenden)"- Is zero time: [true_or_false]"(die Methode IsZero() verwenden)
- Die Abschlussmeldung anzuzeigen:
"Time tracking completed - all requested formats processed"
Verwende das Paket time, um mit Zeitobjekten zu arbeiten, das Paket strings, um die Eingabezeichenfolge aufzuteilen, und das Paket fmt für die formatierte Ausgabe. Denke daran, dass time.Now() ein time.Time-Objekt zurückgibt, das alle Informationen über den aktuellen Zeitpunkt enthält, und dass du mithilfe der verschiedenen für dieses Objekt verfügbaren Methoden bestimmte Komponenten extrahieren kannst. Diese Herausforderung zeigt, wie die aktuelle Zeit erfasst und verschiedene Informationen aus einem einzigen time.Time-Objekt extrahiert werden können.
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Übe selbstständig: Online-Go-Compiler