Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiere ich eine String-Darstellung eines Wochentags in einen „time.Weekday“-Wert?

Wie konvertiere ich eine String-Darstellung eines Wochentags in einen „time.Weekday“-Wert?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 17:55:03334Durchsuche

How to Convert a String Representation of a Day of Week into a `time.Weekday` Value?

String-Darstellung des Wochentags in time.Weekday Value analysieren

Problem:

Konvertieren einer Zeichenfolge, die einen Tag darstellt der Woche in eine äquivalente Zeit umwandeln. Der Wochentagswert stellt eine Herausforderung dar. Das Zeitpaket enthält keine integrierte Funktionalität für diese Konvertierung.

Erste Lösung:

Ein erster Ansatz besteht darin, ein Array zum Speichern der Zuordnung zwischen den Tagen zu verwenden von Wochenzeichenfolgen und ihren entsprechenden time.Weekday-Werten. Zum Beispiel:

<code class="go">var daysOfWeek = [...]string{
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
}

func parseWeekday(v string) (time.Weekday, error) {
    for i := range daysOfWeek {
        if daysOfWeek[i] == v {
            return time.Weekday(i), nil
        }
    }

    return time.Sunday, fmt.Errorf("invalid weekday '%s'", v)
}</code>

Empfohlene Optimierung:

Um die Effizienz und Klarheit dieser Konvertierung zu verbessern, wird eine Karte anstelle eines Arrays empfohlen. Karten ermöglichen schnellere Suchvorgänge, was zu einer verbesserten Leistung führt.

<code class="go">var daysOfWeek = map[string]time.Weekday{
    "Sunday":    time.Sunday,
    "Monday":    time.Monday,
    "Tuesday":   time.Tuesday,
    "Wednesday": time.Wednesday,
    "Thursday":  time.Thursday,
    "Friday":    time.Friday,
    "Saturday":  time.Saturday,
}

func parseWeekday(v string) (time.Weekday, error) {
    if d, ok := daysOfWeek[v]; ok {
        return d, nil
    }

    return time.Sunday, fmt.Errorf("invalid weekday '%s'", v)
}</code>

Tipp:

Für eine robuste Lösung kann eine for-Schleife verwendet werden, um die Tage der Woche sicher zu initialisieren Karte.

<code class="go">var daysOfWeek = map[string]time.Weekday{}

func init() {
    for d := time.Sunday; d <= time.Saturday; d++ {
        daysOfWeek[d.String()] = d
    }
}</code>

Zusätzliche Parsing-Flexibilität:

Die kartenbasierte Lösung bietet einen Vorteil gegenüber dem Array-basierten Ansatz. Durch das Hinzufügen zusätzlicher Schlüssel-Wert-Paare zur Karte können zusätzliche gültige Werte geparst werden, ohne die Parsing-Logik zu ändern.

Um beispielsweise sowohl den vollständigen Namen als auch den aus drei Buchstaben bestehenden Kurznamen von Wochentagen zu analysieren, kann die Karte verwendet werden wie folgt erweitert:

<code class="go">var daysOfWeek = map[string]time.Weekday{}

func init() {
    for d := time.Sunday; d <= time.Saturday; d++ {
        name := d.String()
        daysOfWeek[name] = d
        daysOfWeek[name[:3]] = d
    }
}</code>

Diese erweiterte Lösung ermöglicht das Parsen von Zeichenfolgen wie „Mo“ oder „Fri“ in ihre entsprechenden time.Weekday-Werte.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine String-Darstellung eines Wochentags in einen „time.Weekday“-Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn