Rumah > Artikel > pembangunan bahagian belakang > Cara menetapkan zon waktu dalam bahasa go
Dua kaedah tetapan: 1. Zon waktu tetap, sintaks "var c = time.FixedZone("CST", 8*3600)" dan "time.Now().In(c).Format(" Masa ")"; 2. Muatkan zon masa, sintaks "var c, _ = time.LoadLocation("Asia/Shanghai")" dan "time.Now().In(c).Format("time")".
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Pembahagian zon waktu
Dunia menggunakan Greenwich, London, England sebagai titik permulaan longitud sifar, dan setiap 15 longitud adalah zon waktu, 15 darjah Meridian ialah meridian tengah zon waktu, yang dibahagikan kepada 24 zon waktu. Zon waktu bertambah setiap 15 darjah longitud dari barat ke timur, dan sebaliknya, zon waktu berkurangan setiap 15 darjah longitud ke barat. Zon waktu China ialah 8 Timur.
Format masa
Masa semasatime.Now()
Mengembalikan masa dalam zon waktu tempatan:
func main() { t := time.Now() fmt.Println(t) //2020-12-16 09:34:19.5828312 +0800 CST m=+0.004002201 }
Masa CST
CST boleh mewakili empat zon waktu berbeza berikut:
time.Now()
+0800 CST
yang dikembalikan mewakili Waktu Piawai China, dan penukaran kepada waktu UTC adalah seperti berikut:
GMT + 8 = UTC + 8 = CST
Monotonic Jam dan Jam Dinding
Jam Dinding mewakili masa jam dinding dan menyimpan cap waktu sejak 0:00:00 pada 1 Januari 1970. Apabila sistem dan pelayan pemasaan menjalankan operasi masa penentukuran, Ada kemungkinan bahawa detik ini ialah 2018-1-1 00:00:00, dan detik seterusnya menjadi 2017-12-31 23:59:59.
Jam Monotonic bermaksud masa monotonic yang dipanggil monotonik bermakna ia hanya akan terus berkembang ke hadapan dan tidak akan terjejas oleh operasi pelarasan masa. time.Now()
Yang dikembalikan m=+0.004002201
bermaksud Jam Monotonic
Tetapan zon waktu
Jika zon waktu yang ditentukan tidak ditetapkan dalam bahasa go , apa yang diperoleh melalui time.Now()
ialah zon waktu tempatan:
func main() { t := time.Now() //返回本地时区格式 fmt.Println(t) }
Bahasa go tidak mempunyai perkara seperti menetapkan zon waktu secara global Setiap kali masa dikeluarkan, a Fungsi In() perlu dipanggil untuk menukar zon waktu.
Terdapat dua cara untuk menetapkan zon waktu:
1 Zon waktu tetap (disyorkan)
var cstZone = time.FixedZone("CST", 8*3600) // 东八 fmt.Println(time.Now().In(cstZone).Format("2006-01-02 15:04:05"))
Betulkan zon waktu kepada. Daerah Kelapan Timur. Tetapi ini bukan tetapan global untuk program Anda perlu membetulkan zon waktu
setiap kali anda mendapatkannya 2. Muatkan zon waktu
var cstSh, _ = time.LoadLocation("Asia/Shanghai") // 上海 fmt.Println(time.Now().In(cstSh).Format("2006-01-02 15:04:05"))
untuk memuatkan masa yang ditentukan. zon. Tetapi jika anda menggunakan kaedah ini tanpa persekitaran go, pemuatan akan gagal, kerana maklumat zon waktu diletakkan dalam pakej pemasangan go.
Jika anda menggunakan kaedah kedua untuk memuatkan zon waktu, anda perlu mengkonfigurasi zon waktu semasa membina imej docker Fail konfigurasi adalah seperti berikut :
FROM golang:alpine as build RUN apk --no-cache add tzdata //构建阶段加载时区 WORKDIR /app ADD . /app RUN CGO_ENABLED=0 GOOS=linux go build -o myapp FROM scratch as final COPY --from=build /app/myapp . ### 下面这行是新加的,复制时区相关的信息到最终镜像中,否则程序会找不到改时区 COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo ENV TZ=Asia/Shanghai //在最终阶段设置时区环境变量 CMD ["/myapp"]
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Cara menetapkan zon waktu dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!