Go标准库time包使用

Go标准库time的使用

time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。

time.Now()

这个是一个包函数:用于获取当前时间Time结构的接口。如下:

package main
import (
    "fmt"
    "time"
)
func main() {
   now := time.Now()
   year := now.Year()
   month := now.Month()
   day := now.Day()
   hour := now.Hour()
   minute := now.Minute()
   sec := now.Second()
   fmt.Println(now)
   fmt.Println(year)
   fmt.Println(month)
   fmt.Println(day)
   fmt.Println(hour)
   fmt.Println(minute)
   fmt.Println(sec)
}

time.Unix(sec int64, nsec int64) Time

包函数:将时间戳转换为时间Time结构。

//timestamp时间戳
time := time.Unix(timestamp,0)
fmt.Println(time)

Time.Unix()

Time结构的方法:获取Unix时间戳。

now := time.Now()
unix := now.Unix()  //unix时间戳秒
unixnano := now.UnixNano() //unix时间戳纳秒
fmt.Print("unix=",unix," unixnano=",unixnano)

func (t Time) Add(d Duration) Time

Time的方法:Add返回时间点t+d。

func main() {
    now := time.Now()
    later := now.Add(time.Hour) // 当前时间加1小时后的时间
    fmt.Println(later)
}

type Timer

定时器:多少时间后触发一次。

    //定时器功能实现
    timer := time.NewTimer(time.Second * 2)
    go func() {
        //开启新的协程在协程中阻塞,不影响主协程
        <-timer.C            //阻塞等待两秒后读取管道
        fmt.Println("hello") //定时后执行的时间
    }()
    fmt.Println("world")

type Ticker

定时器:经过多少时间后触发,循环触发。

//循环定时器功能实现
    ticker := time.NewTicker(time.Second)
    count := 0
    go func() {
        for _ = range ticker.C { //阻塞子协程一秒,然后执行后面逻辑
            fmt.Println("count:", count)
            count++
        }
    }()
    fmt.Println("ticker begin")
    time.Sleep(time.Second * 5)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。