佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Go各時間字符串使用解析

Go各時間字符串使用解析

熱門標簽:地方門戶網(wǎng)站 服務外包 Linux服務器 呼叫中心市場需求 百度競價排名 AI電銷 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng)

Go 中時間格式化的模板

const (
  ANSIC    = "Mon Jan _2 15:04:05 2006"
  UnixDate  = "Mon Jan _2 15:04:05 MST 2006"
  RubyDate  = "Mon Jan 02 15:04:05 -0700 2006"
  RFC822   = "02 Jan 06 15:04 MST"
  RFC822Z   = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
  RFC850   = "Monday, 02-Jan-06 15:04:05 MST"
  RFC1123   = "Mon, 02 Jan 2006 15:04:05 MST"
  RFC1123Z  = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
  RFC3339   = "2006-01-02T15:04:05Z07:00"
  RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
  Kitchen   = "3:04PM"
  // Handy time stamps.
  Stamp   = "Jan _2 15:04:05"
  StampMilli = "Jan _2 15:04:05.000"
  StampMicro = "Jan _2 15:04:05.000000"
  StampNano = "Jan _2 15:04:05.000000000"
)

上面這些是官方定義的layout常量,我們自己也可以定義,如:

"2006-01-02 15:04:05"
"2006-01-02"
"2006-01-02 15:04"
"2006-01-02T15:04" //js和html中多用這種形式
"2006-01-02 15:03:04 -0700 MST"

Format 格式化為字符串

format 的使用對象是一個 time.Time 對象,可以使用官方或者自己定義的布局進行格式化的輸出,如:

now := time.Now()
now.Format("2006-01-02 15:04:05") //輸出 2020-07-21 10:12:13

Parse 字符串解析為時間戳或int64

Parse 方法

需要兩個參數(shù),第一個是布局,第二個是字符串

//Parse解析格式化的字符串并返回它表示的時間值。
//布局通過顯示參考時間(定義為2006年1月2日星期一1:04:05 -0700
//如果它是值,則將被解釋;它作為一個例子
//輸入格式。然后將對輸入字符串。預定義的布局ANSIC,UnixDate,RFC3339等描述了參考時間的標準和便捷表示形式。有關格式和參考時間的定義的更多信息,請參見ANSIC文檔以及此程序包定義的其他常量。
//解析時間偏移為-0700的時間時,如果偏移量對應于當前位置(本地)使用的時區(qū),則Parse在返回的時間中使用該位置和時區(qū)。否則,它將時間記錄為處于偽造位置,時間固定在給定的區(qū)域偏移量。
//
//另外,Time.Format的可執(zhí)行示例詳細說明了布局字符串的工作原理,是一個很好的參考。
//
//值中省略的元素假定為零,或者
//零不可能為1,因此解析“ 3:04 pm”將返回時間
//對應于1月1日,0,15:04:00 UTC(請注意,因為年份是
//0,此時間早于零時間)。
//年份必須在0000..9999的范圍內(nèi)。將檢查星期幾的語法,否則將忽略該語法。
//
//解析帶有MST等區(qū)域縮寫的時間時,如果該區(qū)域縮寫在當前位置具有已定義的偏移量,則使用該偏移量。
//區(qū)域縮寫“ UTC”被識別為UTC,與位置無關。
//如果未知區(qū)域縮寫,則Parse將時間記錄為位于指定位置的偽造位置,并具有零偏移量。
//此選擇意味著可以使用相同的布局無損地解析和重新格式化這樣的時間,但是表示中使用的確切瞬間將因實際區(qū)域偏移而有所不同。為避免此類問題,請首選使用數(shù)字區(qū)域偏移量的時間布局或使用ParseInLocation。
func Parse(layout, value string) (Time, error) {
 return parse(layout, value, UTC, Local)
}

使用例子:

eg, err := time.Parse("2006-01-02 15:04:05 -0700 MST", "2019-08-29 16:48:21 +0800 CST")
//輸出結果為time.Time格式 使用 format格式化后為 2019-08-29 16:48:21 
ParseInLocation
//ParseInLocation類似于Parse,但在兩個重要方面有所不同。
//首先,在沒有時區(qū)信息的情況下,Parse將時間解釋為UTC;
//ParseInLocation將時間解釋為給定位置。
//第二,當給定區(qū)域偏移量或縮寫時,Parse嘗試將其與本地位置進行匹配; ParseInLocation使用給定的位置
func ParseInLocation(layout, value string, loc *Location) (Time, error) {
 return parse(layout, value, loc, loc)
}

參數(shù): 1. 布局 2. 字符串 3. 時區(qū)

獲取本地時區(qū)可以使用 time.Local

使用例子:

onlineAt, err := time.ParseInLocation("2006-01-02T15:04", "2020-01-02T15:04"), time.Local)

解析為int64

對于 time.Time 對象,可以使用.Unix() 方法轉為 int64,如:

eg.Unix() //默認使用 UTC時區(qū) 
eg.Local().Unix() //返回本地時區(qū)的時間戳 int64

參考文章: golang的時區(qū)和神奇的time.Parse

到此這篇關于Go各時間字符串使用解析的文章就介紹到這了,更多相關Go 時間字符串 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang時間字符串和時間戳轉換的案例

標簽:仙桃 銅川 崇左 蘭州 湘潭 湖南 衡水 黃山

巨人網(wǎng)絡通訊聲明:本文標題《Go各時間字符串使用解析》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    扬州市| 托克逊县| 津南区| 万全县| 内黄县| 桑日县| 乌兰浩特市| 清远市| 阳西县| 浦城县| 当涂县| 莆田市| 漳州市| 连山| 潮安县| 志丹县| 孝昌县| 佳木斯市| 共和县| 武鸣县| 淳安县| 凤山县| 伊宁县| 聊城市| 资兴市| 大英县| 岱山县| 汤阴县| 吉林市| 江源县| 靖宇县| 景东| 栾川县| 萨嘎县| 淮滨县| 綦江县| 嘉祥县| 和政县| 卫辉市| 岐山县| 潜山县|