Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Perwakilan Rentetan Hari dalam Minggu kepada Nilai `masa.Hari Minggu`?

Bagaimana untuk Menukar Perwakilan Rentetan Hari dalam Minggu kepada Nilai `masa.Hari Minggu`?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 17:55:03334semak imbas

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

Menghuraikan Perwakilan Rentetan Hari dalam Minggu mengikut masa.Nilai Hari Minggu

Masalah:

Menukar rentetan yang mewakili hari minggu ke dalam masa yang setara.Nilai hari minggu memberikan cabaran. Pakej masa tidak termasuk sebarang fungsi terbina dalam untuk penukaran ini.

Penyelesaian Awal:

Pendekatan awal ialah menggunakan tatasusunan untuk menyimpan pemetaan antara hari rentetan minggu dan masa yang sepadan dengannya.Nilai hari minggu. Contohnya:

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

Pengoptimuman Disyorkan:

Untuk meningkatkan kecekapan dan kejelasan penukaran ini, peta disyorkan dan bukannya tatasusunan. Peta membolehkan carian lebih pantas, menghasilkan prestasi yang lebih baik.

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

Petua:

Untuk penyelesaian yang mantap, gelung for boleh digunakan untuk memulakan daysOfWeek dengan selamat peta.

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

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

Fleksibiliti Penghuraian Tambahan:

Penyelesaian berasaskan peta menawarkan kelebihan berbanding pendekatan berasaskan tatasusunan. Dengan menambahkan pasangan nilai kunci tambahan pada peta, nilai sah tambahan boleh dihuraikan tanpa mengubah suai logik penghuraian.

Sebagai contoh, untuk menghuraikan kedua-dua nama pendek penuh dan 3 huruf hari bekerja, peta boleh dilanjutkan seperti berikut:

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

Penyelesaian lanjutan ini membolehkan menghuraikan rentetan seperti "Isnin" atau "Jumaat" ke dalam masa yang sepadan.Nilai hari minggu.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Perwakilan Rentetan Hari dalam Minggu kepada Nilai `masa.Hari Minggu`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn