最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang time包做時(shí)間轉(zhuǎn)換操作

 更新時(shí)間:2020年12月21日 09:49:01   作者:weixin_41571449  
這篇文章主要介紹了golang time包做時(shí)間轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

Time類型

Now方法表示現(xiàn)在時(shí)間。

func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time

返回現(xiàn)在的時(shí)間,

func (t Time) Unix() int64將時(shí)間轉(zhuǎn)換為unix時(shí)間戳,因?yàn)閐uration的限制,所以應(yīng)該只能計(jì)算從1970年開始的250年左右

func Unix(sec int64, nsec int64) Time將時(shí)間戳轉(zhuǎn)化為Time對(duì)象,看上去相似,只不過這不是time類型的方法

將各種格式的string格式的時(shí)間轉(zhuǎn)換為Time對(duì)象用Parse方法

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"
)

當(dāng)然也可以自己定義

const longForm = "Jan 2, 2006 at 3:04pm (MST)"

t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")

time.format用的就是2016-01-02 15:04:05這個(gè)時(shí)間,隨意的自己定義會(huì)出現(xiàn)不正確的情況,可以去goplayground上跑一下,比如

package main

import (
 "fmt"
 "time"
)

func main() {
 fmt.Println(time.Now().Format("2004-10-06"))
}

-110-09

另一個(gè)Duration類型,表示時(shí)間差,通常用來執(zhí)行定時(shí)任務(wù)或者計(jì)算到期時(shí)間等

看源代碼,計(jì)數(shù)從ns開始所以264/103/103/103/60/60/24/365 大約還剩2^9次方的數(shù)量級(jí),所以前后推250年左右,通常已經(jīng)可以滿足需求

type Duration int64

const (
 minDuration Duration = -1 << 63
 maxDuration Duration = 1<<63 - 1
)
const (
 Nanosecond Duration = 1
 Microsecond     = 1000 * Nanosecond
 Millisecond     = 1000 * Microsecond
 Second        = 1000 * Millisecond
 Minute        = 60 * Second
 Hour         = 60 * Minute
)

ParseDuration(s string) (Duration, error) 把Duration String轉(zhuǎn)為Duration對(duì)象

對(duì)應(yīng)有func (Duration) Hours,func (Duration) Minutes, func (Duration) Seconds, func (Duration) Nanoseconds取小時(shí)數(shù)等

關(guān)于Duration用法的一個(gè)點(diǎn)

如上看到 type Duration int64這一定義

因此我們可以使用常量*time.Second的方式來定義時(shí)長(zhǎng),比如700*time.Millisecond

但是不能使用變量 a := 700 a*time.Milliscond這種用法,因?yàn)椴煌愋偷牟荒芟喑?。建議使用time.Duration(700)*time.Milliscond這種用法

補(bǔ)充:golang 時(shí)區(qū)問題以及time包下常用的一寫函數(shù)和方法

golang時(shí)區(qū)問題

在編寫API時(shí)我們可能接收到前端請(qǐng)求的時(shí)間類型為字符串,當(dāng)我們將它解析為time類型保存到數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)會(huì)根據(jù)它所在服務(wù)器的時(shí)區(qū)來給我們的數(shù)據(jù)自動(dòng)設(shè)置時(shí)區(qū),當(dāng)我們從數(shù)據(jù)庫(kù)取出數(shù)據(jù)時(shí),時(shí)區(qū)會(huì)因?yàn)榉?wù)器數(shù)據(jù)庫(kù)的時(shí)區(qū)不同而導(dǎo)致時(shí)區(qū)差的問題,進(jìn)而影響我們?cè)诟鶕?jù)時(shí)間做一些判斷時(shí),出現(xiàn)多8時(shí)區(qū)等等問題。

所以我們?nèi)〕鰯?shù)據(jù)時(shí)需要做一下時(shí)區(qū)的處理,再進(jìn)行時(shí)間的操作。

用time包的In函數(shù)來做時(shí)區(qū)轉(zhuǎn)換。

func main(){
 //數(shù)據(jù)庫(kù)取出的time類型時(shí)間
 var testTime time.Time
 testTime = time.Now()
 fmt.Println(testTime)

 //time.Local 獲取的是本地時(shí)區(qū)
 t1 := testTime.In(time.Local)
 fmt.Println(t1)

 //將數(shù)據(jù)庫(kù)時(shí)間轉(zhuǎn)為UTC
 t2 := testTime.UTC()
 fmt.Println(t2)

 t3 := t2.In(time.Local)
 fmt.Println(t3)
}

輸出:

2019-03-22 10:05:12.6073357 +0800 CST m=+0.003014901
2019-03-22 10:05:12.6073357 +0800 CST
2019-03-22 02:05:12.6073357 +0000 UTC
2019-03-22 10:05:12.6073357 +0800 CST

很明顯,“數(shù)據(jù)庫(kù)時(shí)間”.In(time.Local)會(huì)將本地時(shí)區(qū)和服務(wù)器數(shù)據(jù)庫(kù)時(shí)區(qū)進(jìn)行對(duì)比,如果時(shí)區(qū)相同,不做處理,如果時(shí)區(qū)不相同處理為當(dāng)前時(shí)區(qū)

golang標(biāo)準(zhǔn)庫(kù)下time包中常用函數(shù)

Now() Time

獲取當(dāng)前時(shí)間,返回Time類型

Unix(sec int64, nsec int64) Time

根據(jù)秒數(shù)和納秒,返回Time類型

Date(year int, month Month, day, hour, min, sec, nsec int, loc

*Location) Time

設(shè)置年月日返回,Time類型

Since(t Time) Duration

返回與當(dāng)前時(shí)間的時(shí)間差

time常用方法

Date() (year int, month Month, day int)

返回年月日,三個(gè)參數(shù)

Year() int

返回年份

Month() Month

返回月份.是Month類型

Day() int

返回多少號(hào)

Weekday() Weekday

返回星期幾,是Weekday類型

Clock() (hour, min, sec int)

返回小時(shí),分鐘,秒

Hour() int

返回小時(shí)

Minute() int

返回分鐘

Second() int

返回秒數(shù)

Nanosecond() int

返回納秒

Add(d Duration) Time

為一個(gè)時(shí)間,添加的時(shí)間類型為Duration.更精確到納秒.比起AddDate

Sub(u Time) Duration

計(jì)算兩個(gè)時(shí)間的差.返回類型Duration

AddDate(years int, months int, days int) Time

添加時(shí)間.以年月日為參數(shù)

Local() Time

設(shè)置location為本地時(shí)間.就是電腦時(shí)間.

Unix() int64

返回時(shí)間戳,自從1970年1月1號(hào)到現(xiàn)在

UnixNano() int64

返回時(shí)間戳.包含納秒

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 深入了解Golang中reflect反射的使用

    深入了解Golang中reflect反射的使用

    這篇文章主要介紹了深入了解Golang中reflect反射的使用,Go語(yǔ)言中的反射是一種機(jī)制,可以在運(yùn)行時(shí)動(dòng)態(tài)地獲取類型信息和操作對(duì)象,以及調(diào)用對(duì)象的方法和屬性等,需要詳細(xì)了解可以參考下文
    2023-05-05
  • Go語(yǔ)言Mock使用基本指南詳解

    Go語(yǔ)言Mock使用基本指南詳解

    這篇文章主要介紹了Go語(yǔ)言Mock使用基本指南詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • golang1.21新特性全面講解

    golang1.21新特性全面講解

    經(jīng)過了半年左右的開發(fā),golang?1.21?最近正式發(fā)布了,這個(gè)版本中有不少重要的新特性和變更,尤其是在泛型相關(guān)的代碼上,下面小編就來和大家好好嘮嘮吧
    2023-08-08
  • golang中json反序列化可能遇到的問題

    golang中json反序列化可能遇到的問題

    這篇文章主要給大家介紹了關(guān)于golang中json反序列化可能遇到的問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

    Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

    這篇文章主要介紹了Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 淺析Golang中如何實(shí)現(xiàn)一個(gè)強(qiáng)大的重試機(jī)制

    淺析Golang中如何實(shí)現(xiàn)一個(gè)強(qiáng)大的重試機(jī)制

    在 Go 語(yǔ)言中,實(shí)現(xiàn)一個(gè)強(qiáng)大的重試機(jī)制可以通過多種方式來完成,這篇文章為大家介紹了一個(gè)常見的實(shí)現(xiàn)方法,需要的小伙伴可以參考一下
    2025-03-03
  • Golang 利用反射對(duì)結(jié)構(gòu)體優(yōu)雅排序的操作方法

    Golang 利用反射對(duì)結(jié)構(gòu)體優(yōu)雅排序的操作方法

    這篇文章主要介紹了Golang 利用反射對(duì)結(jié)構(gòu)體優(yōu)雅排序的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Go語(yǔ)言小白入門刷題打印輸出沙漏

    Go語(yǔ)言小白入門刷題打印輸出沙漏

    這篇文章主要介紹了Go語(yǔ)言刷題打印輸出沙漏的示例過程詳解,非常適合剛?cè)腴TGo語(yǔ)言的小白學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 詳解Go語(yǔ)言中net/http包的使用

    詳解Go語(yǔ)言中net/http包的使用

    Go語(yǔ)言內(nèi)置的?net/http?包十分的優(yōu)秀,提供了HTTP客戶端和服務(wù)端的實(shí)現(xiàn),本文主要就來和大家聊聊net/http包的使用,感興趣的可以了解一下
    2023-07-07
  • Golang實(shí)現(xiàn)Redis網(wǎng)絡(luò)協(xié)議實(shí)例探究

    Golang實(shí)現(xiàn)Redis網(wǎng)絡(luò)協(xié)議實(shí)例探究

    這篇文章主要為大家介紹了Golang實(shí)現(xiàn)Redis網(wǎng)絡(luò)協(xié)議實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論

凤台县| 平罗县| 昭平县| 拜城县| 宁乡县| 新疆| 施甸县| 巴中市| 绥滨县| 广州市| 平遥县| 长汀县| 清远市| 安宁市| 沧州市| 云龙县| 弥勒县| 大理市| 宁远县| 松江区| 黄浦区| 玛纳斯县| 肇源县| 西吉县| 怀远县| 监利县| 四子王旗| 陆河县| 武胜县| 普兰县| 景谷| 乐至县| 静海县| 彝良县| 龙门县| 华坪县| 呼伦贝尔市| 庆元县| 津市市| 尼玛县| 香格里拉县|