golang中的時間格式化
golang時間格式化
科普 CST 含義
CST: 中部標(biāo)準(zhǔn)時間 (Central Standard Time) 同時表示下面4個時區(qū)
CST Central Standard Time(USA) UT-6:00 CST Central Standard Time(Australia) UT 9:30 CST China Standard Time UT 8:00 CST Cuba Standard Time UT-4:0
我們常遇到的應(yīng)該就是 China Standard Time.
GMT 和 UTC 的關(guān)系
UTC (Universal Time Coordinated), 以子午初線(經(jīng)度0)上的評價太陽時為依據(jù), 也就是英國倫敦的平均太陽時
GMT (Greenwitch Mean Time) 格林威治平均時間, 由于地球繞太陽的運(yùn)行的軌道是橢圓, 導(dǎo)致 UTC 表示的時間, 不是很準(zhǔn)確, 因此提出了 GMT 時間, 每年或者2年對 UTC 增加一個閏秒, 來完成修正. 一般上我們可以認(rèn)為 GMT 和 UTC 是一樣的.
golang 的時間 認(rèn)準(zhǔn) "2006-1-2 15:04:05.000 PM Mon Jan GMT " 去格式化就可以了。
也就是1234567,分別對應(yīng):月日時分秒年 時差,很好記憶。
只是稍微注意一下:
- 月:01或Jan都可以
- 小時:03表示12小時制,15表示24小時制。
- 時差:是 -07 ,不是 07,后邊可以增加“00”或“:00”,表示更進(jìn)一步的分秒時差。
- 上下午:使用PM,不是AM。
- 擺放順序:隨意,甚至重復(fù)都可以。源代碼包也有定義的常用格式供使用。
package main
?
import (
?? ?"fmt"
?? ?"time"
)
?
func main() {
?? ?timeNow := time.Now()
?? ?fmt.Println(timeNow.Format("2006-01-02 15:04:05")) // 2022-4-18 14:20:45
?? ?fmt.Println(timeNow.Format("2006/01/02")) ? ? ? ? ?// 2021/06/25
?
?? ?// 獲取當(dāng)前時間戳
?? ?fmt.Println(time.Now().Unix())
?? ?// 指定的時間進(jìn)行格式化
?? ?fmt.Println(time.Unix(1650263305, 0).Format("2006-01-02 15:04:05"))
?
?? ?//24小時之內(nèi)的時間計算 ParseDuration
?? ?//1小時1分1s之前
?? ?t1, _ := timeNow.ParseDuration("-1h1m1s")
?? ?fmt.Println(t1)
?? ?m1 := curtime.Add(t1)
?? ?fmt.Println(m1)
?
? ? //24小時之外的時間計算
?? ?beforeDay := timeNow.AddDate(0, 0, -1) ? ? // 三個參數(shù)分別是年月日,此處獲取的是前一天的日期
?? ?beforeMonth := timeNow.AddDate(0, -1, 0) ? // 前一個月的日期
?? ?beforeYear := timeNow.AddDate(-1, 0, 0) ? ?// 去年的當(dāng)天日期
?? ?fmt.Println(beforeDay)
?? ?fmt.Println(beforeMonth)
?? ?fmt.Println(beforeYear)
?? ?fmt.Println(beforeDay.Format("2006-01-02 15:04:05"))
?
?? ?//24小時
?? ?fmt.Println(timeNow.Format("2006-1-2 15:04:05.000 PM Mon Jan")) // 2021-6-25 10:59:05.410 AM Fri Jun
?? ?fmt.Println(timeNow.Format("2006/01/02 15:04")) ? ? ? ? ? ? ? ? // 2021/06/25 10:59
?? ?fmt.Println(timeNow.Format("2006-1-2 15:04:05.000")) ? ? ? ? ? ?// 2021-6-25 10:59:05.410
?? ?fmt.Println(timeNow.Format("Mon, 02 Jan 2006 15:04:05 GMT")) ? ?// Fri, 25 Jun 2021 10:59:05 GMT
?? ?// 12小時制
?? ?fmt.Println(timeNow.Format("2006-01-02 03:04:05.000 PM Mon Jan")) // 2021-06-25 10:59:05.410 AM Fri Jun
?? ?fmt.Println(timeNow.Format("15:04 2006/01/02")) ? ? ? ? ? ? ? ? ? // 10:59 2021/06/25
}golang 格式化時間 yyyy-MM-dd
固定值
time ?:= "2006-01-02 15:04:05";
- 20060102:得到的是yyyyMMdd。
- 2006/01/02 15:04:得到的是yyyy/MM/dd HH:mm
- 2006年01月02日 15點(diǎn)04分05秒:得到的是yyyy年MM月dd日 HH點(diǎn)mm分SS秒
由來
2006為Golang誕生時間,15是下午3點(diǎn)。
幫助記憶的方法:1月2日3點(diǎn)4分5秒,2006年,-7時區(qū),正好是1234567。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 如何使用Go語言獲取當(dāng)天、昨天、明天、某天0點(diǎn)時間戳以及格式化時間
- GO項目實戰(zhàn)之Gorm格式化時間字段實現(xiàn)
- golang gorm中格式化時間問題詳解
- go語言中時間戳格式化的方法
- golang 使用time包獲取時間戳與日期格式化操作
- golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例
- 詳解Go如何優(yōu)雅的對時間進(jìn)行格式化
- django rest framework serializer返回時間自動格式化方法
- go語言中g(shù)orm時間格式化
- 提升編程技能:學(xué)習(xí)如何在Go語言中正確格式化時間
相關(guān)文章
詳解Go語言Sync.Pool為何不加鎖也能夠?qū)崿F(xiàn)線程安全
在這篇文章中,我們將剖析sync.Pool內(nèi)部實現(xiàn)中,介紹了sync.Pool比較巧妙的內(nèi)部設(shè)計思路以及其實現(xiàn)方式。在這個過程中,也間接介紹了為何不加鎖也能夠?qū)崿F(xiàn)線程安全,感興趣的可以學(xué)習(xí)一下2023-04-04
實時通信的服務(wù)器推送機(jī)制 EventSource(SSE) 簡介附go實現(xiàn)示例代碼
EventSource是一種非常有用的 API,適用于許多實時應(yīng)用場景,它提供了一種簡單而可靠的方式來建立服務(wù)器推送連接,并實現(xiàn)實時更新和通知,這篇文章主要介紹了實時通信的服務(wù)器推送機(jī)制 EventSource(SSE)簡介附go實現(xiàn)示例,需要的朋友可以參考下2024-03-03
ubuntu安裝golang并設(shè)置goproxy的方法步驟
在Ubuntu系統(tǒng)上安裝Go語言(Golang)有多種方法,包括使用包管理器、從源代碼編譯安裝以及使用版本管理工具如gvm,安裝完成后,為了方便管理Go語言項目依賴,需要設(shè)置GOPATH環(huán)境變量并配置Go代理,本文介紹ubuntu安裝golang并設(shè)置goproxy的方法,感興趣的朋友一起看看吧2024-10-10
Go并發(fā)原語之SingleFlight請求合并方法實例
本文我們來學(xué)習(xí)一下 Go 語言的擴(kuò)展并發(fā)原語:SingleFlight,SingleFlight 的作用是將并發(fā)請求合并成一個請求,以減少重復(fù)的進(jìn)程來優(yōu)化 Go 代碼2023-12-12

