Tracks
/
Go
Go
/
Übungen
/
Termine für die Schönheit
Termine für die Schönheit

Termine für die Schönheit

Lernübung

Einführung

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

Layout-Optionen

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.

Anleitung

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.

1. Termindatum parsen

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

2. Prüfen, ob ein Termin bereits vorbei ist

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

3. Prüfen, ob der Termin am Nachmittag liegt

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

4. Zeit und Datum des Termins beschreiben

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."

5. Den Jahrestag der Salon-Eröffnung zurückgeben

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.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Go Exercism

Bereit, mit Termine für die Schönheit zu starten?

Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.