Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-11-23 10:00:35
asal
990 orang telah melayarinya

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan