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

主頁(yè) > 知識(shí)庫(kù) > golang time包做時(shí)間轉(zhuǎn)換操作

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

熱門標(biāo)簽:上海極信防封電銷卡價(jià)格 不封卡外呼系統(tǒng) 鄭州智能語(yǔ)音電銷機(jī)器人價(jià)格 宿遷便宜外呼系統(tǒng)代理商 仙桃400電話辦理 湛江crm外呼系統(tǒng)排名 地圖標(biāo)注免費(fèi)定制店 重慶慶云企業(yè)400電話到哪申請(qǐng) 寧波語(yǔ)音外呼系統(tǒng)公司

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年開(kāi)始的250年左右

func Unix(sec int64, nsec int64) Time將時(shí)間戳轉(zhuǎn)化為Time對(duì)象,看上去相似,只不過(guò)這不是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í)間差,通常用來(lái)執(zhí)行定時(shí)任務(wù)或者計(jì)算到期時(shí)間等

看源代碼,計(jì)數(shù)從ns開(kāi)始所以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 = 163 - 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的方式來(lái)定義時(shí)長(zhǎng),比如700*time.Millisecond

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

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

golang時(shí)區(qū)問(wèn)題

在編寫API時(shí)我們可能接收到前端請(qǐng)求的時(shí)間類型為字符串,當(dāng)我們將它解析為time類型保存到數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)會(huì)根據(jù)它所在服務(wù)器的時(shí)區(qū)來(lái)給我們的數(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ū)差的問(wèn)題,進(jìn)而影響我們?cè)诟鶕?jù)時(shí)間做一些判斷時(shí),出現(xiàn)多8時(shí)區(qū)等等問(wèn)題。

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

用time包的In函數(shù)來(lái)做時(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ò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang 定時(shí)任務(wù)方面time.Sleep和time.Tick的優(yōu)劣對(duì)比分析
  • 解決Golang time.Parse和time.Format的時(shí)區(qū)問(wèn)題
  • 解決golang時(shí)間字符串轉(zhuǎn)time.Time的坑
  • golang的時(shí)區(qū)和神奇的time.Parse的使用方法
  • 對(duì)Golang中的runtime.Caller使用說(shuō)明
  • Golang中的time.Duration類型用法說(shuō)明
  • golang xorm及time.Time自定義解決json日期格式的問(wèn)題
  • golang time常用方法詳解

標(biāo)簽:安康 物業(yè)服務(wù) 電子產(chǎn)品 儋州 青海 海南 西雙版納 遼寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang time包做時(shí)間轉(zhuǎn)換操作》,本文關(guān)鍵詞  golang,time,包做,時(shí)間,轉(zhuǎn)換,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang time包做時(shí)間轉(zhuǎn)換操作》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang time包做時(shí)間轉(zhuǎn)換操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 繁峙县| 遂平县| 罗源县| 买车| 保康县| 搜索| 巴青县| 澜沧| 黑山县| 彩票| 册亨县| 永康市| 新乐市| 菏泽市| 禄丰县| 绥江县| 清水河县| 凤山市| 昌黎县| 恩平市| 石首市| 铜陵市| 仁化县| 明溪县| 军事| 新晃| 大悟县| 兴和县| 南雄市| 扎鲁特旗| 绥中县| 玛曲县| 颍上县| 扬州市| 潮州市| 正阳县| 永兴县| 招远市| 霍山县| 河东区| 通道|