cari
Rumahpembangunan bahagian belakangGolangBagaimana untuk menukar masa kepada UTC sebelum menyusunnya kepada JSON dalam Go?

在 Go 中将时间编组为 JSON 之前如何将时间转换为 UTC?

Dalam bahasa Go, sebelum menukar masa kepada UTC, kita boleh menggunakan fungsi dan kaedah yang disediakan dalam pakej masa untuk memprosesnya. Pertama, kita boleh menggunakan fungsi time.Now() untuk mendapatkan waktu tempatan semasa. Kemudian, gunakan fungsi masa.LoadLocation("UTC") untuk memuatkan zon waktu UTC. Seterusnya, gunakan kaedah time.In() untuk menukar waktu tempatan kepada waktu UTC. Akhir sekali, gunakan kaedah time.Format() untuk memformat masa UTC ke dalam format rentetan yang kita perlukan. Dengan cara ini, kita boleh menukar masa kepada UTC dan melaksanakan pemprosesan dan operasi seterusnya.

Kandungan soalan

Saya cuba mentakrifkan perwakilan format time 结构,它实现 marshaler 接口,这样,当它被编组为 json 时,它以 yyyy-mm-ddthh:mm:ssz di mana masa ditukar kepada utc dan dibundarkan kepada saat terdekat. Saya telah mencuba prosedur berikut:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "time"
)

type time struct {
    time.time
}

func (t *time) marshaljson() ([]byte, error) {
    return []byte(t.time.utc().round(time.second).format(time.rfc3339)), nil
}

func main() {
    tm := time.now()
    // tm := time.now().utc().round(time.second)

    tmjson, err := json.marshal(tm)
    if err != nil {
        log.fatalf("marshal time: %v", err)
    }

    fmt.println(string(tmjson))
}

Tetapi apabila saya menjalankannya, ia mencetak

> go run main.go
"2022-12-07t16:32:51.494597-08:00"

Sebaliknya, jika saya memasukkan time.now().utc().round(time.second) sebagai input yang akan disusun (iaitu, menggunakan baris ulasan dalam coretan di atas), saya mendapat output yang diingini:

> go run main.go
"2022-12-08T00:41:10Z"

Soalan saya ialah: Mengapa saya tidak boleh melakukan penukaran kepada utc dan bulatkan kepada detik terdekat dalam kaedah marshaljson itu sendiri?

Penyelesaian

Apa yang anda mahu lakukan?

Saya cuba menjalankan fungsi marshaljson anda dan ia berfungsi seperti yang diharapkan

Ini yang saya cuba lakukan:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "time"
)

type time struct {
    time.time
}

func (t *time) marshaljson() ([]byte, error) {
    return []byte(t.time.utc().round(time.second).format(time.rfc3339)), nil
}

func main() {
    // tm := time.now().utc()
    tm := time.now().utc().round(time.second)

    tmjson, err := json.marshal(tm)
    if err != nil {
        log.fatalf("marshal time: %v", err)
    }

    fmt.println(string(tmjson))

    marshal_time := time{time.now().utc()}
    byt_arr, _ := marshal_time.marshaljson()
    fmt.println(string(byt_arr))
}

Saya mendapat output berikut:

"2022-12-08T04:41:59Z"
2022-12-08T04:41:59Z

Baris pertama ialah keluaran anda sebelum ini dan baris kedua ialah keluaran fungsi marshaljson.

Atas ialah kandungan terperinci Bagaimana untuk menukar masa kepada UTC sebelum menyusunnya kepada JSON dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:stackoverflow. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Membina sistem berskala dengan bahasa pengaturcaraan GoMembina sistem berskala dengan bahasa pengaturcaraan GoApr 25, 2025 am 12:19 AM

Goisidealforbuildingscalablesystemsduetoitssimplicity, ecurciency, dan barangan-inconcurrencysupport.1) go'ScleansyntaxandminimalisticdesignenhanceProductivityandreduceerrors.2)

Amalan terbaik untuk menggunakan fungsi init dengan berkesan di GOAmalan terbaik untuk menggunakan fungsi init dengan berkesan di GOApr 25, 2025 am 12:18 AM

InitFunctionsingorunautomaticallybeforemain () andareuseforforsettingupenvironmentsandinitializingvariables.usethemforsimpletasks, mengelakkansidefefects, andbecautiouswithtestingandloggingtomaintaincodeclarityAndestability.

Perintah pelaksanaan fungsi init dalam pakej GoPerintah pelaksanaan fungsi init dalam pakej GoApr 25, 2025 am 12:14 AM

GoinitializespackagesintheordertheyareImported, thenexecutesinitfunctionswithinapackageintheirdefinitionorder, danfilenamesdeterminetheorderacrossmultiplefiles

Menentukan dan menggunakan antara muka tersuai di GOMenentukan dan menggunakan antara muka tersuai di GOApr 25, 2025 am 12:09 AM

CustomInterfacesingoarecrucialForWritingFlexible, diselenggara, danTestableCode.theYenabledEveloperStofocusonbehavioroverImplementation, enhancingmodularityandrobustness.bydefiningmethodsignaturesthattypesmustimplement, interfacesallowforcorcodforcodforcodforcodforcodforcodforcodforcodeShorcodeShorcodforcodforcodeShorcodeShorcodeShorcodeShorcodeShorcodeAdeShorcodeShorcodeSoUsVorcoShorcodeS

Menggunakan antara muka untuk mengejek dan menguji di GOMenggunakan antara muka untuk mengejek dan menguji di GOApr 25, 2025 am 12:07 AM

Alasan untuk menggunakan antara muka untuk simulasi dan ujian adalah bahawa antara muka membolehkan definisi kontrak tanpa menentukan pelaksanaan, menjadikan ujian lebih terpencil dan mudah dikekalkan. 1) Pelaksanaan antara muka yang tersirat menjadikannya mudah untuk membuat objek mengejek, yang dapat menggantikan pelaksanaan sebenar dalam ujian. 2) Menggunakan antara muka dengan mudah boleh menggantikan pelaksanaan sebenar perkhidmatan dalam ujian unit, mengurangkan kerumitan ujian dan masa. 3) Fleksibiliti yang disediakan oleh antara muka membolehkan perubahan dalam tingkah laku simulasi untuk kes ujian yang berbeza. 4) Antara muka membantu reka bentuk kod yang boleh diuji dari awal, meningkatkan modulariti dan mengekalkan kod.

Menggunakan init untuk permulaan pakej di GoMenggunakan init untuk permulaan pakej di GoApr 24, 2025 pm 06:25 PM

Di GO, fungsi INIT digunakan untuk permulaan pakej. 1) Fungsi init secara automatik dipanggil apabila permulaan pakej, dan sesuai untuk memulakan pembolehubah global, menetapkan sambungan dan memuatkan fail konfigurasi. 2) Terdapat pelbagai fungsi init yang boleh dilaksanakan dalam urutan fail. 3) Apabila menggunakannya, perintah pelaksanaan, kesukaran ujian dan kesan prestasi harus dipertimbangkan. 4) Adalah disyorkan untuk mengurangkan kesan sampingan, menggunakan suntikan ketergantungan dan penangguhan permulaan untuk mengoptimumkan penggunaan fungsi INIT.

Pernyataan Pilih Go: Pelbagai operasi serentakPernyataan Pilih Go: Pelbagai operasi serentakApr 24, 2025 pm 05:21 PM

Go'sSelectStatementStreamLinesConcurrentProgrammingByMultiPlexingOperations.1) itAllowSwaitingonMultiPlechannoPerations,

Teknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsTeknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsApr 24, 2025 pm 05:09 PM

ContextandWaitGroupSarecrucialingingoformanagingGoroutinesfectively.1) ContextAllowsSignalingCancellationandDeadlinesacrosapiboundaries, memastikangoroutinescanbestplygracely.2) WaitgroupSsynchronizegoroutine, Mempersembahkan CreationAllcebeBefefeSproprophering, Preveation

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft