golang 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() //分钟
	second := now.Second() //秒
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)

	timestamp1 := now.Unix()     //时间戳
	timestamp2 := now.UnixNano() //纳秒时间戳
	fmt.Printf("%v,%v\n", timestamp1, timestamp2)

	timeObj := time.Unix(timestamp1, 0) //将时间戳转为时间格式
	fmt.Println(timeObj)
	year2 := timeObj.Year()     //年
	month2 := timeObj.Month()   //月
	day2 := timeObj.Day()       //日
	hour2 := timeObj.Hour()     //小时
	minute2 := timeObj.Minute() //分钟
	second2 := timeObj.Second() //秒
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year2, month2, day2, hour2, minute2, second2)

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

	//计算时间差 相当于计时器
	time.Sleep(time.Second)
	now2 := time.Now()
	interval := now.Sub(now2)
	fmt.Println(interval)

	isEqual := now.Equal(now2) //比较两个时间是否相同
	fmt.Println(isEqual)

	isBefor := now.Before(now2) //判断是否在之前
	isAfter := now.After(now2)  //判断是否在之后
	fmt.Println(isBefor, isAfter)

	//定时器实现 每秒执行一次
	// ticker := time.Tick(time.Second)
	// for i := range ticker {
	// 	fmt.Println(i)
	// }

	//时间格式化
	// 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"))
	fmt.Println(now.Format("2006/01/02 15:04"))
	fmt.Println(now.Format("15:04 2006/01/02"))
	fmt.Println(now.Format("2006/01/02"))
	fmt.Println(now.Format("2006-01-02"))

	// 加载时区
	loc, err := time.LoadLocation("Asia/Shanghai")
	if err != nil {
		fmt.Println(err)
		return
	}
	// 按照指定时区和指定格式解析字符串时间
	timeObj2, err := time.ParseInLocation("2006/01/02 15:04:05", "2019/08/04 14:15:20", loc)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(timeObj2)
	fmt.Println(timeObj2.Sub(now))

}

猜你喜欢

转载自blog.csdn.net/qq_40771567/article/details/108483129