go time包的使用

類型

time.Time{}

時間類型,包含了秒和納秒以及Location

wall uint64//秒
ext  int64//納秒
loc *Location

time.Month()

type Month int

月份.定義了十二個月的常量

Weekday

type Weekday int 周,定義了一周的七天

Duration

time.Duration()

持續(xù)時間.定義了以下持續(xù)時間類型.多用于時間的加減 需要傳入Duration做為參數(shù)的時候

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

Location

在time包里有兩個時區(qū)變量:

time.UTC utc時間
time.Local 本地時間
FixedZone(name string, offset int) *Location
設(shè)置時區(qū)名,以及與UTC0的時間偏差.返回Location

Timer(定時器)

定時器只會傳達(dá)一次到期事件,

type Timer struct {
    C <-chan Time
    r runtimeTimer
}

Ticker(斷續(xù)器)

周期性的傳達(dá)到期事件的裝置,

定時器只會傳達(dá)一次到期事件连霉,斷續(xù)器會持續(xù)工作直到停止

type Ticker struct {
    C <-chan Time // The channel on which the ticks are delivered.
    r runtimeTimer
}

time包的常用函數(shù)

time.Now()

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

func Sleep(d Duration)

表示睡多少時間祭示,睡覺時锈麸,是阻塞狀態(tài)

Since(t Time) Duration

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

Unix(sec int64, nsec int64) Time

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

(若只有秒或者毫秒切距,另一個參數(shù)為零)

func Until(t Time) Duration

計算t到當(dāng)前的時間差.返回類型Duration

func After(d Duration) <-chan Time

返回一個time.C這個管道村斟,d(時間間隔)后會在此管道中放入一個時間點(time.Now())

func AfterFunc(d Duration, f func()) *Timer

將一個間隔和一個函數(shù)給AfterFunc后鸠删,間隔時間過后抱完,執(zhí)行傳入的函數(shù)(執(zhí)行一遍)

func NewTimer(d Duration) *Timer

新的定時創(chuàng)建一個新的定時器,將當(dāng)前時間的通道后至少持續(xù)時間D.

func Parse(layout, value string) (Time, error)

將字符竄轉(zhuǎn)換為Time類型.

layout := ""2006-01-02 15:04:05.999999""
t, _ := time.Parse(layout, "2013-10-05 18:30:50")
fmt.Println(t.Year())
// 當(dāng)前時區(qū)時間格式化轉(zhuǎn)換
strTime := "2018-03-24T20:01:00+08:00"
tim, _:=time.ParseInLocation("2006-01-02T15:04:05+08:00", strTime, time.Local)

func ParseDuration(s string) (Duration, error)

將字duration符竄("ns", "us" (or "碌s"), "ms", "s", "m", "h".)轉(zhuǎn)換為Duration類型.就是納秒

t, _ := time.ParseDuration("1h")
fmt.Println(t.Seconds())

func ParseInLocation(layout, value string, loc *Location) (Time, error)

parseinlocation像解析刃泡,但在兩個重要方面不同巧娱。首先碉怔,在時區(qū)信息的情況下,分析解釋時間UTC禁添;parseinlocation解釋時間在給定的位置撮胧。其次,當(dāng)給定一個帶偏移或縮寫老翘,解析試圖匹配與局部的位置芹啥;parseinlocation使用給定的位置。

func NewTicker(d Duration) *Ticker

創(chuàng)建一個新的Ticker

func Tick(d Duration) <-chan Time

返回一個time.C這個管道铺峭,d(時間間隔)后會在此管道中放入一個時間點(time.Now())

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

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

LoadLocation(name string) (*Location, error)

給定名稱返回位置

func FixedZone(name string, offset int) *Location

給定名稱和偏移量返回位置

Time類型

After(u Time) bool

時間類型比較,是否在Time之后

Before(u Time) bool

時間類型比較,是否在Time之前

Equal(u Time) bool

比較兩個時間是否相等

IsZero() bool

判斷時間是否為零值,如果sec和nsec兩個屬性都是0的話,則該時間類型為0

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

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

Year() int

返回年份

Month() Month

返回月份.是Month類型

Day() int

返回多少號

Weekday() Weekday

返回星期幾,是Weekday類型

ISOWeek() (year, week int)

返回年份,和該填是在這年的第幾周.

Clock() (hour, min, sec int)

返回小時,分鐘,秒

Hour() int

返回小時

Minute() int

返回分鐘

Second() int

返回秒數(shù)

Nanosecond() int

返回納秒

Unix() int64

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

UnixNano() int64

返回時間戳.包含納秒值

func (t Time) Format(layout string) string

將時間轉(zhuǎn)化為一個格式

t.Format("2006-01-02 15:04")

Add(d Duration) Time

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

Sub(u Time) Duration

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

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

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

UTC() Time

設(shè)置location為UTC,然后返回時間.就是utc為0.比中國晚了八個小時.

Local() Time

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

In(loc *Location) Time

設(shè)置location為指定location

Location() *Location

獲取時間的Location,如果是nic,返回UTC,如果為空,則代表本地

Zone() (name string, offset int)

返回時區(qū),以及與utc的時間偏差

一般時間的操作

獲取當(dāng)前時間

now := time.Now()

納秒/毫秒/秒轉(zhuǎn)換

fmt.Println(ns / 1e6) //納秒轉(zhuǎn)毫秒
fmt.Println(ns / 1e9) //納秒轉(zhuǎn)秒

格式化時間

time.Now().Format("2006-01-02 15:04")

字符串轉(zhuǎn)Time

withNanos := "2006-01-02 15:04:05"
t, _ := time.Parse(withNanos, "2013-10-05 18:30:50")
fmt.Println(t.Year())

定時器

go func() {
    var timer *time.Timer
    for   {
        select {
        case <- func() <-chan time.Time {
            if timer==nil {
                timer=time.NewTimer(time.Millisecond)
            }else {
                timer.Reset(time.Millisecond)
            }
            return timer.C
        }():
            fmt.Println("time out")
            break
        }
    }
}()

斷續(xù)器(每隔固定時間執(zhí)行一次)

var ticker *time.Ticker=time.NewTicker(time.Millisecond)
ticks:=ticker.C
go func() {
    for tick:=range ticks {
        fmt.Println(tick)
    }
}()

定時每天固定時間

func TestPayCenterWrite(t *testing.T) {
    timeNow := time.Now() //獲取當(dāng)前時間
    //獲取當(dāng)前零時
    zeroHour := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, timeNow.Location())
    //獲取下一個零時
    next := zeroHour.Add(time.Hour * 24)
    //當(dāng)前時間和下一個零時創(chuàng)建時間差創(chuàng)建定時器
    timer := time.NewTimer(next.Sub(timeNow))
    <-timer.C
    go func()
    var ticker *time.Ticker = time.NewTicker(time.Hour * 24)
    ticks := ticker.C
    for range ticks {
        go func()
    }
}

計算兩個點的時間差

func TestMountSubrouterOn(t *testing.T) {
    createTime:="2018-05-07 16:20:23"
    create_Time, _ := time.ParseInLocation("2006-01-02 15:04:05", createTime,time.Now().Location())
    sub:=time.Now().Sub(create_Time)
    fmt.Println(sub.Minutes())
    fmt.Println(create_Time.Location().String())
    fmt.Println(time.Now().Location())
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墓怀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卫键,更是在濱河造成了極大的恐慌傀履,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉炉,死亡現(xiàn)場離奇詭異钓账,居然都是意外死亡,警方通過查閱死者的電腦和手機絮宁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門梆暮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绍昂,你說我怎么就攤上這事啦粹。” “怎么了治专?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵卖陵,是天一觀的道長。 經(jīng)常有香客問我张峰,道長泪蔫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任喘批,我火速辦了婚禮撩荣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饶深。我一直安慰自己餐曹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布敌厘。 她就那樣靜靜地躺著台猴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饱狂,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天曹步,我揣著相機與錄音,去河邊找鬼休讳。 笑死讲婚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俊柔。 我是一名探鬼主播筹麸,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雏婶!你這毒婦竟也來了物赶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤留晚,失蹤者是張志新(化名)和其女友劉穎块差,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倔丈,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年状蜗,在試婚紗的時候發(fā)現(xiàn)自己被綠了需五。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轧坎,死狀恐怖宏邮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情韩肝,我是刑警寧澤涂乌,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布蚜迅,位于F島的核電站,受9級特大地震影響飒炎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜笆豁,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一郎汪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闯狱,春花似錦煞赢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春凝危,著一層夾襖步出監(jiān)牢的瞬間波俄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工媒抠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弟断,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓趴生,卻偏偏與公主長得像阀趴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苍匆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 http://ironxu.com/747 介紹Go 標(biāo)準(zhǔn)庫 time 常用導(dǎo)出函數(shù)刘急,結(jié)構(gòu)體及其方法。 ...
    好剛編程閱讀 16,962評論 2 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理浸踩,服務(wù)發(fā)現(xiàn)叔汁,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,783評論 0 38
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,952評論 6 13
  • 霜林遍染離人淚检碗,霧花空望故人情据块。此愁漫漫何處銷,付與春水流至冰折剃。
    王神馬閱讀 210評論 0 1