时间类型

// timeDemo 时间对象的年月日时分秒
func timeDemo() {
    now := time.Now() // 获取当前时间
    fmt.Printf("current time:%v\n", now)
    year := now.Year()     //
    day := now.Day()       //
    second := now.Second() //
}

时间间隔

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

定时器

func tickDemo() {
    ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器
    for i := range ticker {
        fmt.Println(i)//每秒都会执行的任务
    }
}

转为字符串

// formatDemo 时间格式化
func formatDemo() {
    now := time.Now()
    // 格式化的模板为 2006-01-02 15:04:05

    // 24小时制
    fmt.Println(now.Format("2006-01-02 15:04:05.000 Mon Jan"))
    // 12小时制
    fmt.Println(now.Format("2006-01-02 03:04:05.000 PM Mon Jan"))

    // 小数点后写0,因为有3个0所以格式化输出的结果也保留3位小数
    fmt.Println(now.Format("2006/01/02 15:04:05.000")) // 2022/02/27 00:10:42.960
    // 小数点后写9,会省略末尾可能出现的0
    fmt.Println(now.Format("2006/01/02 15:04:05.999")) // 2022/02/27 00:10:42.96

    // 只格式化时分秒部分
    fmt.Println(now.Format("15:04:05"))
    // 只格式化日期部分
    fmt.Println(now.Format("2006.01.02"))
}

字符串转为时间对象

// parseDemo 指定时区解析时间
func parseDemo() {
    // 在没有时区指示符的情况下,time.Parse 返回UTC时间
    timeObj, err := time.Parse("2006/01/02 15:04:05", "2022/10/05 11:25:20")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(timeObj) // 2022-10-05 11:25:20 +0000 UTC

    // 在有时区指示符的情况下,time.Parse 返回对应时区的时间表示
    // RFC3339     = "2006-01-02T15:04:05Z07:00"
    timeObj, err = time.Parse(time.RFC3339, "2022-10-05T11:25:20+08:00")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(timeObj) // 2022-10-05 11:25:20 +0800 CST
}

 

posted on 2022-12-17 23:08  topass123  阅读(226)  评论(0编辑  收藏  举报