Dalam bahasa Go, IsZero() ialah kaedah dalam masa. Struktur masa, digunakan untuk menentukan sama ada masa adalah sifar. Walau bagaimanapun, apabila anda menggunakan kaedah ini, kadangkala anda akan menghadapi ralat yang serupa dengan "argumen tidak sah...untuk IsZero()". Jadi, bagaimana kita menyelesaikan masalah ini?
Mula-mula, mari kita lihat apa sebenarnya maksud ralat ini. Maksud ralat ini ialah parameter yang anda lalui tidak boleh ditukar kepada masa. Jenis masa, jadi kaedah IsZero() tidak boleh digunakan.
Jadi, mengapa kita menghadapi ralat ini? Biasanya, ralat ini disebabkan oleh pemformatan yang salah apabila kami menggunakan rentetan masa. Sebagai contoh, format rentetan masa biasa kami ialah "2006-01-02 15:04:05", tetapi jika kami menggunakan format lain, ralat ini mungkin dicetuskan.
Seterusnya, kita perlu memformat rentetan masa masuk. Kita boleh menukar rentetan masa kepada masa. Jenis masa menggunakan kaedah Parse() atau ParseInLocation(). Contohnya:
layout := "2006-01-02 15:04:05" str := "2022-01-01 12:00:00" t, err := time.Parse(layout, str) if err != nil { fmt.Println(err) return }
Dalam kod di atas, kami menggunakan kaedah time.Parse() untuk menukar rentetan masa str kepada jenis masa. Jika penukaran gagal, mesej ralat yang sepadan akan dikeluarkan. Perlu diingatkan bahawa parameter susun atur di sini mestilah konsisten sepenuhnya dengan format rentetan masa.
Jika anda perlu menukar berdasarkan zon waktu, anda boleh menggunakan kaedah ParseInLocation(). Contohnya:
layout := "2006-01-02 15:04:05" str := "2022-01-01 12:00:00" location := time.FixedZone("CST", 8*3600) // 东八区 t, err := time.ParseInLocation(layout, str, location) if err != nil { fmt.Println(err) return }
Dalam kod di atas, kami mencipta lokasi zon waktu yang mengandungi perbezaan masa dan menukar rentetan masa kepada masa. Jenis masa mengikut zon waktu. Perlu diingatkan bahawa lokasi di sini mestilah zon waktu yang sah.
Akhir sekali, kita boleh menggunakan kaedah IsZero() untuk menentukan sama ada masa adalah sifar. Contohnya:
if t.IsZero() { fmt.Println("时间为零值") } else { fmt.Println("时间不为零值") }
Jika anda masih menemui ralat "argumen tidak sah...untuk IsZero()", anda boleh menyemak sama ada format rentetan masa yang anda gunakan adalah betul. Selain itu, anda juga boleh menggunakan kaedah lain yang disediakan oleh pakej masa terbina dalam bahasa Go untuk melaksanakan operasi masa, seperti Add(), Sub(), Before(), Equal(), dsb.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat 'hujah tidak sah…untuk IsZero()' dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!