91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中時間函數及定時器的使用

發布時間:2020-08-27 15:52:00 來源:網絡 閱讀:1899 作者:thao888 欄目:編程語言

Go語言中時間函數及定時器、休眠等功能的實現和使用,代碼如下,有需要的小伙伴直接拿去

package main

import (
    "time"
    "fmt"
)

func main() {
    // 設置時區,如果name是""或"UTC",返回UTC;
    // 如果name是"Local",返回Local;
    // 否則name應該是IANA時區數據庫里有記錄的地點名(該數據庫記錄了地點和對應的時區),如"America/New_York"。
    location,err := time.LoadLocation("America/New_York")
    if err != nil {
        panic(err)
    }

    // 創建時間,依次是:年、月、日、時、分、秒、納秒(1秒=1000毫秒=1000000微秒=1000000000納秒)、時區
    t1 := time.Date(2018, 7, 7, 12, 12, 12, 500000000, location)
    fmt.Println(t1)  // 2018-07-07 12:12:12.5 -0400 EDT

    // 將字符串轉成時間,時間格式字符串:"2006-01-02 15:04:05"(Go語言規定)
    t2,err := time.Parse("2006-01-02 15:04:05", "2018-07-07 09:10:05")
    fmt.Println(t2) // 2018-07-07 09:10:05 +0000 UTC

    // 將字符串轉成時間,需要傳入時區
    t3,err := time.ParseInLocation("20060102", "20180707", time.UTC)
    fmt.Println(t3) // 2018-07-07 00:00:00 +0000 UTC

    // 獲取當前時間
    t4 := time.Now()
    fmt.Println(t4) // 2018-05-23 20:50:08.9873106 +0800 CST m=+0.012895501

    // 格式化輸出
    fmt.Println(t4.Format("2006-01-02 15:04:05")) // 2018-05-23 20:50:08
    fmt.Println(t4.Format("02/01/2006 15:04:05")) // 23/05/2018 20:50:08
    fmt.Println(t4.Format("2006-01-02"))           // 2018-05-23
    fmt.Println(t4.Format("15:04:05"))             // 20:50:08
    fmt.Println(t4.Format("January 2,2006"))      // May 23,2018

    // 獲取世界統一時間
    t5 := t4.UTC()
    fmt.Println(t5) // 2018-05-23 12:50:08.9873106 +0000 UTC

    // 獲取本地時間
    t6 := t5.Local()
    fmt.Println(t6) // 2018-05-23 20:50:08.9873106 +0800 CST

    // 獲取指定時區的時間
    t7 := t6.In(location)
    fmt.Println(t7) // 2018-05-23 08:50:08.9873106 -0400 EDT

    // 獲取Unix時間戳,單位:秒,即從時間點1970-01-01 00:00:00 UTC到時間點t所經過的時間
    timestamp := t7.Unix()
    fmt.Println(timestamp) // 1527080185

    // 獲取Unix時間戳,單位:納秒,常用于作為rand的隨機數種子
    timestamp = t7.UnixNano()
    fmt.Println(timestamp) // 1527080185738346000

    // 判斷兩個時間是否相等,會判斷時區等信息,不同時區也可以用此進行比較
    fmt.Println(t7.Equal(t6)) // true

    // 判斷t4是否在t3之前
    fmt.Println(t4.Before(t3)) // true

    // 判斷t4是否在t3之后
    fmt.Println(t4.After(t3))  // false

    // 返回時間的年、月、日
    y,m,d := t4.Date()
    fmt.Printf("年:%d,月:%d,日:%d\n", y, m, d) // 年:2018,月:5,日:23

    // 返回時間的時、分、秒
    h,minute,s := t4.Clock()
    fmt.Printf("時:%d,分:%d,秒:%d\n", h, minute, s) // 時:21,分:5,秒:41

    // 單獨獲取年、月、日、時、分、秒、星期
    fmt.Printf("年:%d,月:%d,日:%d,時:%d,分:%d,秒:%d,星期:%d\n", t4.Year(), t4.Month(), t4.Day(), t4.Hour(), t4.Minute(), t4.Second(), t4.Weekday()) // 年:2018,月:5,日:23,時:21,分:9,秒:56,星期:3

    t8,err := time.Parse("2006-01-02 15:04:05", "2018-01-01 00:00:00")
    // 增加100秒,time.Duration是以納秒為單位,time.Second=1000 000 000。參數可以為負數就是減少
    t9 := t8.Add(time.Duration(100) * time.Second)
    fmt.Println(t9) // 2018-01-01 00:01:40 +0000 UTC

    // 增加或減少年、月、日
    t10 := t8.AddDate(1, 1, -1)
    fmt.Println(t10) // 2019-01-31 00:00:00 +0000 UTC

    // 計算兩個時間之間的差
    dur := t8.Sub(t9)
    fmt.Println(dur.Seconds()) // -100

    // 將時間戳轉成Time對象,第一個參數為秒,第二個參數為納秒,如果傳秒數,則納秒傳入0;如果傳入納秒,則秒傳入0
    t11 := time.Unix(0, timestamp);
    fmt.Println(t11.Format("2006-01-02 15:04:05"))

    //=======================================================================定時器、休眠等
    // Timer,單次時間事件,指定時間后向通道C發送當時時間
    timer := time.NewTimer(time.Duration(1) * time.Second)
    fmt.Println(<- timer.C)

    // 也可配合select使用
    timer = time.NewTimer(time.Duration(1) * time.Second)
    select {
    case <- timer.C :
        fmt.Println("執行...")
    }

     // 用Timer實現定時器
    timer = time.NewTimer(time.Duration(1) * time.Second)
    for {
        select {
        case <- timer.C :
            fmt.Println("Timer定時器...")
            timer.Reset(time.Duration(1) * time.Second) // 重新開始計時
        }
    }

    // 開啟一個新協程,在指定時間后執行給定函數,所以測試時,需要將主協程休眠幾秒才能看到執行結果
    time.AfterFunc(time.Duration(1) * time.Second, func() {
        fmt.Println("AfterFunc...")
    })
    // 當前協程休眠指定時間
    time.Sleep(2 * time.Second)

    // 指定時間后向通道C發送當時時間
    tt := <- time.After(time.Duration(1) * time.Second)
    fmt.Println(tt)

    // Ticker保管一個通道,并每隔一段時間向其傳遞"tick"。
    ticker := time.NewTicker(time.Duration(1) * time.Second)
    // 用Ticker實現定時器
    for {
        select {
        case <-ticker.C:
            fmt.Println("Ticker...")
        }
    }

}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武定县| 尉犁县| 临安市| 盘山县| 衡山县| 常宁市| 汕头市| 乾安县| 兰州市| 伊吾县| 衡南县| 太白县| 密山市| 溆浦县| 乌恰县| 山西省| 武义县| 永州市| 香格里拉县| 临西县| 北票市| 集贤县| 海林市| 通州市| 图们市| 铅山县| 饶阳县| 河东区| 图木舒克市| 秀山| 涪陵区| 饶平县| 宁阳县| 汤原县| 吉木萨尔县| 长宁县| 启东市| 甘谷县| 大港区| 龙南县| 西城区|