Ein Time in Go ist ein Typ, der einen Zeitpunkt beschreibt.
Über seine Methoden kannst du auf die Datums- und Zeitinformationen zugreifen, sie vergleichen und verändern. Es gibt aber auch einige Funktionen, die du direkt auf dem time-Paket aufrufst.
Das aktuelle Datum und die aktuelle Uhrzeit erhältst du mit der Funktion time.Now.
Die Funktion time.Parse wandelt Strings in Werte vom Typ Time um.
In Go legst du das Layout, das du beim Parsen erwartest, auf eine besondere Weise fest.
Du schreibst ein Beispiel für das Layout und verwendest dabei die Werte dieses besonderen Zeitstempels:
Mon Jan 2 15:04:05 -0700 MST 2006.
Zum Beispiel:
import "time"
func parseTime() time.Time {
date := "Tue, 09/22/1995, 13:00"
layout := "Mon, 01/02/2006, 15:04"
t, err := time.Parse(layout,date) // time.Time, error
}
// => 1995-09-22 13:00:00 +0000 UTC
Die Methode Time.Format() gibt eine String-Darstellung der Zeit zurück.
Genau wie bei der Funktion Parse wird auch hier das Ziel-Layout über ein Beispiel festgelegt, das die Werte des besonderen Zeitstempels verwendet.
Zum Beispiel:
import (
"fmt"
"time"
)
func main() {
t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
fmt.Println(formattedTime)
}
// => Fri, 09/22/1995, 13:00
Für ein eigenes Layout kombinierst du diese Optionen. In Go gibt es außerdem vordefinierte Formatkonstanten für Datum und Zeitstempel.
| Zeit | Optionen |
|---|---|
| Jahr | 2006 ; 06 |
| Monat | Jan ; January ; 01 ; 1 |
| Tag | 02 ; 2 ; _2 (für eine führende 0) |
| Wochentag | Mon ; Monday |
| Stunde | 15 ( 24-Stunden-Format ) ; 3 ; 03 (AM oder PM) |
| Minute | 04 ; 4 |
| Sekunde | 05 ; 5 |
| AM/PM-Kennung | PM |
| Tag des Jahres | 002 ; __2 |
Der Typ time.Time hat verschiedene Methoden, um auf eine bestimmte Zeit zuzugreifen, z. B. Stunde: Time.Hour(), Monat: Time.Month().
Mehr dazu, wie das funktioniert, findest du in der offiziellen Dokumentation.
Das Paket time enthält außerdem einen weiteren Typ, Duration, der eine verstrichene Zeitspanne darstellt, sowie Unterstützung für Orte/Zeitzonen, Timer und andere verwandte Funktionalität, die in einem anderen Konzept behandelt wird.
In dieser Übung arbeitest du an einem Terminplaner für einen Schönheitssalon, der am 15. September 2012 eröffnet wurde.
Du hast fünf Aufgaben, bei denen es alles um Termindaten geht.
Implementiere die Schedule-Funktion, um eine textuelle Darstellung eines Termindatums in das entsprechende time.Time-Format zu parsen:
Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC
Implementiere die HasPassed-Funktion, die ein Termindatum entgegennimmt und prüft, ob der Termin irgendwann in der Vergangenheit lag:
HasPassed("July 25, 2019 13:45:00")
// => true
Implementiere die IsAfternoonAppointment-Funktion, die ein Termindatum entgegennimmt und prüft, ob der Termin am Nachmittag liegt (>= 12:00 und < 18:00):
IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true
Implementiere die Description-Funktion, die ein Termindatum entgegennimmt und eine Beschreibung dieses Datums und dieser Uhrzeit zurückgibt:
Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."
Implementiere die AnniversaryDate-Funktion, die den Jahrestag der Salon-Eröffnung für das aktuelle Jahr in UTC zurückgibt.
Angenommen, das aktuelle Jahr ist 2020:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
Hinweis: Der Rückgabewert ist ein time.Time, und die Tageszeit spielt keine Rolle.
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.