Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah fungsi Go `time.Parse` saya mengembalikan nilai masa yang tidak dijangka?

Mengapakah fungsi Go `time.Parse` saya mengembalikan nilai masa yang tidak dijangka?

Barbara Streisand
Barbara Streisandasal
2024-11-23 10:00:35930semak imbas

Why is my Go `time.Parse` function returning an unexpected time value?

Memahami masa.Menghuraikan Gelagat dalam Go

Apabila cuba menukar rentetan kepada masa.Nilai masa dalam Go menggunakan masa.Kaedah Parse, menetapkan rentetan format yang betul adalah penting untuk mendapatkan hasil yang diharapkan.

Pertimbangkan kod berikut coretan:

package main

import (
    "fmt"
    "time"
)

func main() {
    const longForm = "2013-05-13T18:41:34.848Z"
    //even this is not working
    //const longForm = "2013-05-13 18:41:34.848 -0700 PDT"
    t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT")
    fmt.Println(t)
}

Kod cuba menghuraikan rentetan dalam format "2013-05-13 18:41:34.848 -0700 PDT" menggunakan rentetan format longForm. Walau bagaimanapun, output adalah tidak dijangka: "0001-01-01 00:00:00 0000 UTC".

Untuk memahami tingkah laku ini, adalah penting untuk ambil perhatian bahawa masa rujukan lalai untuk masa itu. Kaedah parse ialah " Isn Jan 2 15:04:05 MST 2006", yang mewakili masa Unix 1136239445. Ini bermakna rentetan format mesti mewakili masa rujukan dengan sewajarnya.

Dalam kod yang diberikan, rentetan format longForm salah mewakili masa rujukan sebagai "2006-01-02 15:04:05 -0700". Ketidakpadanan dalam format masa rujukan ini membawa kepada output yang tidak dijangka.

Untuk menyelesaikan isu ini, rentetan format longForm harus diubah suai agar sepadan dengan masa rujukan:

package main

import (
        "fmt"
        "log"
        "time"
)

func main() {
        const longForm = "2006-01-02 15:04:05 -0700"
        t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700")
        if err != nil {
                log.Fatal(err)
        }
        fmt.Println(t)
}

Dengan longForm yang betul rentetan format, masa. Kaedah parse kini menukar rentetan kepada masa dengan tepat. Nilai masa: "2013-05-13 01:41:34.848 0000 UTC".

Atas ialah kandungan terperinci Mengapakah fungsi Go `time.Parse` saya mengembalikan nilai masa yang tidak dijangka?. 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