Rumah  >  Artikel  >  pembangunan bahagian belakang  >  penukaran masa golang

penukaran masa golang

PHPz
PHPzasal
2023-05-27 13:38:083556semak imbas

Golang ialah bahasa pengaturcaraan yang cekap dan padat yang digunakan secara meluas dalam pelbagai bidang. Dalam pembangunan, kita selalunya perlu menukar masa, seperti menukar rentetan kepada masa, menukar masa kepada rentetan, dsb., dan format masa yang berbeza juga akan menyebabkan masalah tertentu. Oleh itu, artikel ini akan memperkenalkan operasi penukaran masa di Golang dan menerangkan penggunaan khususnya melalui contoh.

1. Tukar rentetan kepada masa

Di Golang, kita boleh menggunakan fungsi Parse dalam pakej masa untuk menukar rentetan kepada masa. Takrif khusus bagi fungsi Parse adalah seperti berikut:

func Parse(susun atur, rentetan nilai) (Masa, ralat)

di mana reka letak mewakili format masa rentetan yang hendak ditukar, dan nilai mewakili aksara yang akan ditukar. Kedua-dua parameter ini boleh menggunakan pemalar yang dipratentukan dalam pakej masa Pemalar khusus dan maknanya adalah seperti berikut:

时间常量 意义
ANSIC "Mon Jan _2 15:04:05 2006"
UnixDate "Mon Jan _2 15:04:05 MST 2006"
RFC3339 "2006-01-02T15:04:05Z07:00"

Sebagai contoh, tukar rentetan "2022/04/12 15:20:00" kepada. masa Kod sampel adalah seperti berikut:

timeStr := "2022/04/12 15:20:00"
layout := "2006/01/02 15:04:05"
t, err := time.Parse(layout, timeStr)
if err != nil {
    fmt.Println("转化失败:", err)
} else {
    fmt.Println("转化成功:", t)
}

Antaranya, timeStr ialah rentetan yang hendak ditukar, susun atur ialah format masa rentetan ("2006/01/02 15:04:05" bermaksud tahun, bulan, hari, jam, minit dan saat), t ialah objek masa yang diperoleh selepas penukaran, dan ralat ialah mesej ralat semasa proses penukaran. Menjalankan kod di atas, hasil output adalah seperti berikut:

转化成功: 2022-04-12 15:20:00 +0000 UTC

2. Tukar masa kepada rentetan

Begitu juga, di Golang, kita boleh menggunakan fungsi Format untuk menukar masa kepada rentetan. Takrif khusus bagi fungsi ini adalah seperti berikut:

func (t Time) Format(rentetan reka letak)

Di mana, t ialah objek masa yang hendak ditukar dan reka letak mewakili masa yang diformatkan rentetan. Penggunaannya juga serupa dengan fungsi Parse yang diperkenalkan di atas.

Sebagai contoh, kod sampel untuk menukar masa kepada rentetan dalam format "2022/04/12 15:20:00" adalah seperti berikut:

t := time.Now()
layout := "2006/01/02 15:04:05"
timeStr := t.Format(layout)
fmt.Println("转化后时间字符串:", timeStr)

di mana t ialah arus masa dan reka letak ialah penukaran Format masa berikutnya ("2006/01/02 15:04:05" mewakili tahun, bulan, hari, jam, minit dan saat), dan timeStr ialah rentetan masa yang ditukar. Jalankan kod di atas dan hasil output adalah seperti berikut:

转化后时间字符串: 2022/04/12 15:20:00

3. Penukaran zon masa

Di Golang, perwakilan zon masa boleh diperoleh menggunakan fungsi Lokasi dalam pakej masa . Takrifannya adalah seperti berikut:

func LoadLocation(rentetan nama) (*Lokasi, ralat)

Di mana, nama mewakili nama zon waktu (seperti "Asia/Shanghai").

Sebagai contoh, apabila menukar waktu tempatan kepada waktu UTC, anda boleh menggunakan fungsi UTC dalam pakej masa Kod sampel adalah seperti berikut:

t := time.Now()
utc := t.UTC()
fmt.Println("本地时间:", t)
fmt.Println("UTC时间:", utc)

di mana t ialah waktu tempatan dan utc. ialah waktu UTC yang ditukar. Jalankan kod di atas dan hasil output adalah seperti berikut:

本地时间: 2022-10-07 15:24:56.200122 +0800 CST m=+0.000498761
UTC时间: 2022-10-07 07:24:56.200122 +0000 UTC

4. Penambahan dan penolakan masa

Di Golang, penambahan dan penolakan masa boleh dilakukan menggunakan fungsi Tambah dan Subfungsi. Definisi khususnya adalah seperti berikut:

func (t Time) Add(d Duration) Time
func (t Time) Sub(u Time) Duration

Antaranya, fungsi Add menambah masa t Objek Tempoh sebelumnya d mengembalikan objek masa baharu; fungsi Sub menolak objek masa lain u daripada masa t dan mengembalikan objek Tempoh.

Sebagai contoh, kod sampel untuk menambah 10 minit pada masa sedia ada adalah seperti berikut:

t := time.Now()
d := 10 * time.Minute
newTime := t.Add(d)
fmt.Println("原时间:", t)
fmt.Println("加10分钟后的时间:", newTime)

Antaranya, t ialah masa sedia ada, d ialah selang masa yang akan ditambah (10 minit), newTime ialah masa baharu yang diperoleh selepas menambah. Jalankan kod di atas dan hasil output adalah seperti berikut:

原时间: 2022-10-07 15:35:26.924559 +0800 CST m=+0.000213898
加10分钟后的时间: 2022-10-07 15:45:26.924559 +0800 CST

5. Bagaimana untuk mengoptimumkan kecekapan penukaran masa

Dalam pembangunan sebenar, kami mungkin mempunyai sejumlah besar keperluan penukaran masa, dan menggunakan Masa Golang sendiri Menukar pakej akan mengurangkan kecekapan program. Pada masa ini, kami boleh menggunakan perpustakaan pihak ketiga untuk pengoptimuman.

Pada masa ini, perpustakaan penukaran masa yang lebih popular termasuk:

  • Komponen penukaran masa dalam pustaka Gorm
  • Pustaka Masa sumber terbuka Rob Pike
  • Pustaka TimeUtils sumber terbuka Bjoernu

Pustaka pihak ketiga ini boleh meningkatkan kecekapan penukaran masa dengan sangat baik, dan juga menyelesaikan masalah yang disebabkan oleh reka letak masa yang berbeza pada sistem yang berbeza.

Ringkasan

Artikel ini memperkenalkan operasi penukaran masa di Golang, termasuk menukar rentetan kepada masa, masa kepada rentetan, penukaran zon waktu, penambahan dan penolakan masa, dsb. Pada masa yang sama, beberapa perpustakaan penukaran masa biasa juga disediakan untuk mengoptimumkan kecekapan penukaran masa Saya harap artikel ini dapat memberikan sedikit bantuan kepada pembangun Golang dalam penukaran masa.

Atas ialah kandungan terperinci penukaran masa golang. 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
Artikel sebelumnya:penukaran data golangArtikel seterusnya:penukaran data golang