婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go每日一庫之dateparse處理時間

Go每日一庫之dateparse處理時間

熱門標(biāo)簽:如何利用高德地圖標(biāo)注家 400手機電話免費辦理 電腦外呼系統(tǒng)輻射大嗎 武漢百應(yīng)人工智能電銷機器人 上海企業(yè)外呼系統(tǒng)排名 開通400電話申請流程 智能語音電銷的機器人 揚州電銷外呼系統(tǒng)軟件 百度地圖標(biāo)注位置網(wǎng)站

簡介

不管什么時候,處理時間總是讓人頭疼的一件事情。因為時間格式太多樣化了,再加上時區(qū),夏令時,閏秒這些細枝末節(jié)處理起來更是困難。所以在程序中,涉及時間的處理我們一般借助于標(biāo)準(zhǔn)庫或第三方提供的時間庫。今天要介紹的dateparse專注于一個很小的時間處理領(lǐng)域——解析日期時間格式的字符串。

快速使用

本文代碼使用 Go Modules。

創(chuàng)建目錄并初始化:

$ mkdir dateparse  cd dateparse
$ go mod init github.com/darjun/go-daily-lib/dateparse

安裝dateparse庫:

$ go get -u github.com/araddon/dateparse

使用:

package main

import (
  "fmt"
  "log"
  "github.com/araddon/dateparse"
)

func main() {
  t1, err := dateparse.ParseAny("3/1/2014")
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(t1.Format("2006-01-02 15:04:05"))

  t2, err := dateparse.ParseAny("mm/dd/yyyy")
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(t2.Format("2006-01-02 15:04:05"))
}

ParseAny()方法接受一個日期時間字符串,解析該字符串,返回time.Time類型的值。如果傳入的字符串dateparse庫無法識別,則返回一個錯誤。上面程序運行輸出:

$ go run main.go
2014-03-01 00:00:00
2021/06/24 14:52:39 Could not find format for "mm/dd/yyyy"
exit status 1

需要注意,當(dāng)我們寫出"3/1/2014"這個時間的時候,可以解釋為2014年3月1日,也可以解釋為2014年1月3日。這就存在二義性,dateparse默認采用mm/dd/yyyy這種格式,也就是2014年3月1日。我們也可以使用ParseStrict()函數(shù)讓這種具有二義性的字符串解析失敗:

func main() {
  t, err := dateparse.ParseStrict("3/1/2014")
  if err != nil {
    log.Fatal(err)
  }
  fmt.Println(t.Format("2006-01-02 15:04:05"))
}

運行:

$ go run main.go
2021/06/24 14:57:18 This date has ambiguous mm/dd vs dd/mm type format
exit status 1

格式

dateparse支持豐富的日期時間格式,基本囊括了所有常用的格式。它支持標(biāo)準(zhǔn)庫time中預(yù)定義的所有格式:

// src/time/format.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"
)

支持的完整格式查看dateparse README。

時區(qū)

dateparse支持在特定時區(qū)解析日期時間字符串。我們可以通過調(diào)用標(biāo)準(zhǔn)庫的time.LoadLocation()方法,傳入時區(qū)標(biāo)識字符串來獲得時區(qū)對象。時區(qū)標(biāo)識字符串是類似Asia/Shanghai,America/Chicago這樣的格式,它表示一個具體的時區(qū),前者上海,后者洛杉磯。調(diào)用dateparse.ParseIn()方法傳入時區(qū)對象,在指定時區(qū)中解析。time包中還預(yù)定義了兩個時區(qū)對象,time.Local表示本地時區(qū),time.UTC表示 UTC 時區(qū)。時區(qū)的權(quán)威數(shù)據(jù)請看IANA。

func main() {
  tz1, _ := time.LoadLocation("America/Chicago")
  t1, _ := dateparse.ParseIn("2021-06-24 15:50:30", tz1)
  fmt.Println(t1.Local().Format("2006-01-02 15:04:05"))

  t2, _ := dateparse.ParseIn("2021-06-24 15:50:30", time.Local)
  fmt.Println(t2.Local().Format("2006-01-02 15:04:05"))
}

運行:

$ go run main.go
2021-06-25 04:50:30
2021-06-24 15:50:30

美國洛杉磯時區(qū)的"2021年6月24日 15時30分30秒"等于本地時區(qū)(北京時間)的"2021年6月25日 04時50分30秒"。

cli

dateparse還提供了一個命令行工具,用于極快地查看日期時間格式。安裝:

$ go install github.com/araddon/dateparse/dateparse

默認會安裝在$GOPATH路徑下,我習(xí)慣上把$GOPATH/bin放到$PATH中。所以dateparse命令可以直接使用。
dateparse命令接收一個字符串,和一個可選的時區(qū)選項:

$ dateparse --timezone="Asia/Shanghai" "2021-06-24 06:46:08"

Your Current time.Local zone is CST

Layout String: dateparse.ParseFormat() => 2006-01-02 15:04:05

Your Using time.Local set to location=Asia/Shanghai CST

+-------------+---------------------------+-------------------------------+-------------------------------------+
| method      | Zone Source               | Parsed                        | Parsed: t.In(time.UTC)              |
+-------------+---------------------------+-------------------------------+-------------------------------------+
| ParseAny    | time.Local = nil          | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC day=4 |
| ParseAny    | time.Local = timezone arg | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC day=4 |
| ParseAny    | time.Local = time.UTC     | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC day=4 |
| ParseIn     | time.Local = nil          | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseIn     | time.Local = timezone arg | 2021-06-24 06:46:08 +0800 CST | 2021-06-23 22:46:08 +0000 UTC       |
| ParseIn     | time.Local = time.UTC     | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseLocal  | time.Local = nil          | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseLocal  | time.Local = timezone arg | 2021-06-24 06:46:08 +0800 CST | 2021-06-23 22:46:08 +0000 UTC       |
| ParseLocal  | time.Local = time.UTC     | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseStrict | time.Local = nil          | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseStrict | time.Local = timezone arg | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
| ParseStrict | time.Local = time.UTC     | 2021-06-24 06:46:08 +0000 UTC | 2021-06-24 06:46:08 +0000 UTC       |
+-------------+---------------------------+-------------------------------+-------------------------------------+

輸出當(dāng)前本地時區(qū),格式字符串(可用于生成同樣格式的日期時間字符串)和一個表格。表格里面的數(shù)據(jù)是分別對ParseAny/ParseIn/ParseLocal/ParseStrict在不同的時區(qū)下調(diào)用的結(jié)果。

method列表示調(diào)用的方法,Zone Source列表示將本地時區(qū)設(shè)置的值,Parsed列是以日期時間字符串調(diào)用ParseAny()返回的time.Time對象的Format()方法調(diào)用結(jié)果,Parsed: t.In(time.UTC)列在返回的time.Time對象調(diào)用Format()方法前將其轉(zhuǎn)為 UTC 時間。

由于ParseAny/ParseStrict不會考慮本地時區(qū),都是在 UTC 下解析字符串,所以這 6 行的最后兩列結(jié)果都一樣。

ParseIn的第二行,將time.Local設(shè)置為我們通過命令行選項設(shè)置的時區(qū),上面我設(shè)置為Asia/Shanghai,對應(yīng)的 UTC 時間相差 8 小時。ParseLocal也是如此。

下面是dateparse命令行的部分源碼,可以對照查看:

func main() {
  parsers := map[string]parser{
    "ParseAny":    parseAny,
    "ParseIn":     parseIn,
    "ParseLocal":  parseLocal,
    "ParseStrict": parseStrict,
  }

  for name, parser := range parsers {
    time.Local = nil
    table.AddRow(name, "time.Local = nil", parser(datestr, nil, false), parser(datestr, nil, true))
    if timezone != "" {
      time.Local = loc
      table.AddRow(name, "time.Local = timezone arg", parser(datestr, loc, false), parser(datestr, loc, true))
    }
    time.Local = time.UTC
    table.AddRow(name, "time.Local = time.UTC", parser(datestr, time.UTC, false), parser(datestr, time.UTC, true))
  }
}

func parseIn(datestr string, loc *time.Location, utc bool) string {
  t, err := dateparse.ParseIn(datestr, loc)
  if err != nil {
    return err.Error()
  }
  if utc {
    return t.In(time.UTC).String()
  }
  return t.String()
}

注意輸出的本地時區(qū)為 CST,它可以代表不同的時區(qū):

Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

CST 可以同時表示美國、澳大利亞、中國和古巴四個國家的標(biāo)準(zhǔn)時間。

總結(jié)

使用dateparse可以很方便地從日期時間字符串中解析出時間對象和格式(layout)。同時dateparse命令行可以快速的查看和轉(zhuǎn)換相應(yīng)時區(qū)的時間,是一個非常不錯的小工具。

大家如果發(fā)現(xiàn)好玩、好用的 Go 語言庫,歡迎到 Go 每日一庫 GitHub 上提交 issue😄

參考

dateparse GitHub:https://github.com/araddon/dateparse
Go 每日一庫 GitHub:https://github.com/darjun/go-daily-lib

到此這篇關(guān)于Go每日一庫之dateparse處理時間的文章就介紹到這了,更多相關(guān)Go dateparse處理時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Go實現(xiàn)比較時間大小
  • go時間/時間戳操作大全(小結(jié))
  • go語言中時間戳格式化的方法
  • golang時間、時區(qū)、格式的使用方法
  • go語言計算兩個時間的時間差方法
  • Golang記錄、計算函數(shù)執(zhí)行耗時、運行時間的一個簡單方法
  • Golang獲取當(dāng)前時間代碼

標(biāo)簽:新余 張掖 宜賓 江西 武漢 延邊 黑龍江 嘉峪關(guān)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go每日一庫之dateparse處理時間》,本文關(guān)鍵詞  每日,一庫,之,dateparse,處理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go每日一庫之dateparse處理時間》相關(guān)的同類信息!
  • 本頁收集關(guān)于Go每日一庫之dateparse處理時間的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产一区二区看久久| 99久久免费国产| 久久久噜噜噜久噜久久综合| 亚洲成人高清在线| 色妹子一区二区| 国产精品传媒入口麻豆| 国产福利一区在线观看| 精品国偷自产国产一区| 国产精品综合av一区二区国产馆| 欧美大尺度电影在线| 国产一区二区日韩精品| 久久久久久久久伊人| 成人一区二区三区视频在线观看| 中文字幕一区二区三区在线不卡| 国内成人精品2018免费看| 欧美男男青年gay1069videost | 在线观看日韩电影| 日日夜夜免费精品视频| 精品久久久久久久久久久久久久久 | 日韩一区和二区| 裸体在线国模精品偷拍| 国产亚洲1区2区3区| av在线不卡电影| 五月天亚洲精品| 久久久99久久精品欧美| 91国偷自产一区二区三区观看| 亚洲第一成年网| 国产亚洲一本大道中文在线| 欧美亚洲国产一区二区三区| 精品午夜久久福利影院 | 日本午夜精品一区二区三区电影| 久久青草欧美一区二区三区| 成人av网站在线观看免费| 亚洲午夜激情网页| 久久亚洲一级片| 欧美性猛交xxxx乱大交退制版| 狠狠色丁香婷婷综合| 一区二区三区国产豹纹内裤在线| 欧美日本一区二区三区四区| 国产福利一区在线| 麻豆成人免费电影| 亚洲天堂中文字幕| 欧美tickling挠脚心丨vk| 色综合色综合色综合色综合色综合| 琪琪久久久久日韩精品| 国产午夜一区二区三区| 91精品综合久久久久久| 色8久久人人97超碰香蕉987| 国产高清成人在线| 激情成人午夜视频| 亚洲福利国产精品| 亚洲免费观看视频| 亚洲欧洲在线观看av| 久久精品免费在线观看| 精品少妇一区二区三区在线播放| 欧美视频在线观看一区| 99精品欧美一区| 成人性视频免费网站| 美女免费视频一区二区| 午夜精品一区在线观看| 亚洲一区二区高清| 亚洲视频在线一区二区| 中国av一区二区三区| 久久久久国产精品麻豆ai换脸| 91精品国产色综合久久不卡电影| 欧美亚日韩国产aⅴ精品中极品| av在线不卡网| 色欧美乱欧美15图片| 在线一区二区视频| 欧洲一区二区三区在线| 欧美无乱码久久久免费午夜一区 | 国产精品美女久久福利网站| 日韩欧美一级在线播放| 91精品国产综合久久精品麻豆 | 精品一区二区在线观看| 日韩成人一区二区| 日本亚洲电影天堂| 蜜臀久久99精品久久久画质超高清| 日韩av电影一区| 麻豆一区二区三| 国产精品影视网| av一本久道久久综合久久鬼色| 国产高清不卡二三区| 菠萝蜜视频在线观看一区| 97久久精品人人做人人爽| 一本大道综合伊人精品热热| 欧美日韩高清一区二区三区| 日韩三级免费观看| 久久久久久久久久久久久久久99 | 亚洲成人自拍一区| 青青草国产精品亚洲专区无| 国产成人亚洲精品青草天美| 99久久精品99国产精品 | 久久一区二区视频| 国产精品美女久久久久久久| 亚洲一区二区三区小说| 免费人成精品欧美精品| 国产毛片精品国产一区二区三区| 99精品欧美一区二区三区综合在线| 精品视频在线免费| 欧美韩国一区二区| 肉色丝袜一区二区| 99re这里都是精品| 欧美人伦禁忌dvd放荡欲情| 日韩欧美一二三四区| 亚洲欧洲制服丝袜| 日韩二区在线观看| 成人av电影在线| 精品久久久久久久人人人人传媒 | 亚洲国产视频a| 国产不卡视频在线观看| 欧美日韩亚洲综合在线| 国产精品久久久99| 久久99精品国产.久久久久| 一本大道久久a久久综合婷婷| 欧美巨大另类极品videosbest | 国产精品乱人伦一区二区| 亚洲成人久久影院| 粉嫩绯色av一区二区在线观看| 91精品国产综合久久久久久久| 1区2区3区国产精品| 国产一区二区看久久| 欧美一区二区精品久久911| 亚洲综合在线五月| 91麻豆国产在线观看| 国产精品五月天| 国产福利一区二区三区视频在线 | 91美女视频网站| 国产精品嫩草99a| 韩国欧美国产1区| 欧美一级久久久久久久大片| 亚洲一二三区在线观看| 欧美一区三区二区| 亚洲男人的天堂在线aⅴ视频| 国产精品主播直播| 久久午夜色播影院免费高清| 精久久久久久久久久久| 日韩一区二区免费高清| 日韩vs国产vs欧美| 欧美日韩国产bt| 视频在线观看91| 欧美一区二区三区男人的天堂| 日韩国产欧美在线播放| 欧美一区二区三级| 美腿丝袜在线亚洲一区| 欧美xxxxxxxxx| 国产凹凸在线观看一区二区| 国产亚洲综合色| 国产不卡免费视频| 18欧美亚洲精品| 欧美精品久久久久久久多人混战| 日韩国产在线一| 日韩欧美国产一区二区在线播放| 久久97超碰色| 国产精品五月天| 欧美在线观看禁18| 喷水一区二区三区| 久久久久久久久免费| 成人福利视频网站| 亚洲综合区在线| 日韩午夜精品电影| 久草精品在线观看| 国产精品久久久久久久久免费丝袜| 国产91精品露脸国语对白| 国产精品欧美一级免费| 91麻豆高清视频| 免费精品视频最新在线| 国产日韩欧美高清在线| 91亚洲精华国产精华精华液| 一区2区3区在线看| 精品国产乱码久久久久久影片| 北条麻妃一区二区三区| 亚洲午夜激情av| 国产日产欧美一区二区三区| 色综合久久久久综合99| 视频一区欧美精品| 欧美国产在线观看| 欧美午夜精品电影| 国产综合色产在线精品| 一区二区在线免费观看| 日韩免费一区二区| 成人av在线影院| 日本欧美一区二区| 亚洲国产成人私人影院tom | 色嗨嗨av一区二区三区| 国内不卡的二区三区中文字幕| 一区二区三区中文字幕在线观看| 日韩欧美卡一卡二| 日本韩国欧美在线| 国产在线一区二区综合免费视频| 一区二区三区在线免费观看| 精品久久久久久综合日本欧美| 色综合色狠狠综合色| 国产一区二区三区在线观看精品| 亚洲天堂2014| 国产亚洲一区二区在线观看| 欧美精品 日韩| 99精品久久只有精品| 国产精品77777| 国精产品一区一区三区mba视频 |