5.时间

予早 2025-02-21 01:08:21
Categories: Tags:
//时间常变量
const (
    Nanosecond  Duration = 1  //type Duration int64
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)
package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Now()) //2023-02-18 13:09:47.9115727 +0800 CST m=+0.002695301

    t := time.Now()
    fmt.Println(t.Year())
    fmt.Println(t.Month())
    fmt.Println(int(t.Month())) //type Month int
    fmt.Println(t.Day())
    fmt.Println(t.Hour())
    fmt.Println(t.Minute())
    fmt.Println(t.Second())

    //时间格式化
    dateStr := fmt.Sprintf("%d-%d-%d %d:%d:%d", t.Year(), int(t.Month()), t.Day(), t.Hour(), t.Minute(), t.Second())
    fmt.Println(dateStr)

    //任意组合,特殊的时间格式化
    fmt.Println(t.Format("2006-01-02 15:04:05 -07 MST")) // China Standard Time

    fmt.Println(t.Format("2006-02 04:05"))

    //休眠
    time.Sleep(time.Second)

    //Unix时间戳
    fmt.Println(t.Unix(), t.UnixNano())

}

Timer

package main

import (
    "fmt"
    "time"
)

func main() {
    timer := time.NewTimer(time.Second * 3)
    fmt.Println(time.Now())
    fmt.Println(<-timer.C) // 此处会进行阻塞

    <-time.After(time.Second * 2) // 等价

    timer2 := time.NewTimer(time.Second * 3)
    go func() {
        <-timer2.C
    }()
    timer2.Stop() //
    timer2.Reset(time.Second)

    time.Sleep(time.Second * 3)

}

Ticker

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(time.Second * 2)
    counter := 0
    for _ = range ticker.C {
        counter++
        fmt.Println("2 second has been killed")
        if counter == 10 {
            fmt.Println("You die")
            ticker.Stop()
        }
    }
}