欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Time類型

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

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

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

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

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

將各種格式的string格式的時間轉(zhuǎn)換為Time對象用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這個時間,隨意的自己定義會出現(xiàn)不正確的情況,可以去goplayground上跑一下,比如

package main

import (
 "fmt"
 "time"
)

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

-110-09

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

看源代碼,計數(shù)從ns開始所以264/103/103/103/60/60/24/365 大約還剩2^9次方的數(shù)量級,所以前后推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對象

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

關(guān)于Duration用法的一個點

如上看到 type Duration int64這一定義

因此我們可以使用常量*time.Second的方式來定義時長,比如700*time.Millisecond

但是不能使用變量 a := 700 a*time.Milliscond這種用法,因為不同類型的不能相乘。建議使用time.Duration(700)*time.Milliscond這種用法

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

golang時區(qū)問題

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

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

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

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

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

 //將數(shù)據(jù)庫時間轉(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ù)庫時間”.In(time.Local)會將本地時區(qū)和服務(wù)器數(shù)據(jù)庫時區(qū)進行對比,如果時區(qū)相同,不做處理,如果時區(qū)不相同處理為當(dāng)前時區(qū)

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

Now() Time

獲取當(dāng)前時間,返回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)前時間的時間差

time常用方法

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

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

Year() int

返回年份

Month() Month

返回月份.是Month類型

Day() int

返回多少號

Weekday() Weekday

返回星期幾,是Weekday類型

Clock() (hour, min, sec int)

返回小時,分鐘,秒

Hour() int

返回小時

Minute() int

返回分鐘

Second() int

返回秒數(shù)

Nanosecond() int

返回納秒

Add(d Duration) Time

為一個時間,添加的時間類型為Duration.更精確到納秒.比起AddDate

Sub(u Time) Duration

計算兩個時間的差.返回類型Duration

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

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

Local() Time

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

Unix() int64

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

UnixNano() int64

返回時間戳.包含納秒

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

相關(guān)文章

  • 深入理解Golang中的Protocol Buffers及其應(yīng)用

    深入理解Golang中的Protocol Buffers及其應(yīng)用

    本篇文章將深入探討 Go 語言中使用 Protobuf 的基礎(chǔ)知識、常見應(yīng)用以及最佳實踐,希望能幫大家了解如何在項目中高效利用 Protobuf
    2024-11-11
  • Ubuntu下安裝Go語言開發(fā)環(huán)境及編輯器的相關(guān)配置

    Ubuntu下安裝Go語言開發(fā)環(huán)境及編輯器的相關(guān)配置

    這篇文章主要介紹了Ubuntu下安裝Go語言開發(fā)環(huán)境及編輯器的相關(guān)配置,編輯器方面介紹了包括Vim和Eclipse,需要的朋友可以參考下
    2016-02-02
  • Go依賴注入DI工具wire使用詳解(golang常用庫包)

    Go依賴注入DI工具wire使用詳解(golang常用庫包)

    依賴注入是指程序運行過程中,如果需要調(diào)用另一個對象協(xié)助時,無須在代碼中創(chuàng)建被調(diào)用者,而是依賴于外部的注入,本文結(jié)合示例代碼給大家介紹Go依賴注入DI工具wire使用,感興趣的朋友一起看看吧
    2022-04-04
  • 深入解析Go語言中HTTP請求處理的底層實現(xiàn)

    深入解析Go語言中HTTP請求處理的底層實現(xiàn)

    本文將詳細介紹?Go?語言中?HTTP?請求處理的底層機制,包括工作流程、創(chuàng)建?Listen?Socket?監(jiān)聽端口、接收客戶端請求并建立連接以及處理客戶端請求并返回響應(yīng)等,需要的朋友可以參考下
    2023-05-05
  • go語言中基本數(shù)據(jù)類型及應(yīng)用快速了解

    go語言中基本數(shù)據(jù)類型及應(yīng)用快速了解

    這篇文章主要為大家介紹了go語言中基本數(shù)據(jù)類型應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • go實現(xiàn)一個分布式限流器的方法步驟

    go實現(xiàn)一個分布式限流器的方法步驟

    項目中需要對api的接口進行限流,本文主要介紹了go實現(xiàn)一個分布式限流器的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一文帶你深入理解Golang中的RWMutex

    一文帶你深入理解Golang中的RWMutex

    這篇文章主要為大家詳細介紹了Golang中RWMutex的相關(guān)知識,知其然,更要知其所以然。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04
  • 詳解如何通過Go來操作Redis實現(xiàn)簡單的讀寫操作

    詳解如何通過Go來操作Redis實現(xiàn)簡單的讀寫操作

    作為最常用的分布式緩存中間件——Redis,了解運作原理和如何使用是十分有必要的,今天來學(xué)習(xí)如何通過Go來操作Redis實現(xiàn)基本的讀寫操作,需要的朋友可以參考下
    2023-09-09
  • 詳解Go?將在下個版本支持新型排序算法pdqsort

    詳解Go?將在下個版本支持新型排序算法pdqsort

    這篇文章主要介紹了Go?將在下個版本支持新型排序算法:pdqsort,而就Go支持pdqsort算法,在HN上引起了不少的討論,有人表示,我們研究排序算法這么久了,很驚訝我們還能想出能產(chǎn)生實際改進的優(yōu)化方案。對此,你怎么看,快快上手體驗一下吧
    2022-04-04
  • golang下的GOPATH路徑問題及解決

    golang下的GOPATH路徑問題及解決

    為了方便,我一般使用task來管理項目的編譯等事項,由于才入門go,所以碰到一個問題,以此篇為記,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論