• Golang语言学习笔记(七)


    Golang time包以及日期函数

    1.time包

    时间和日期时编程中经常用到的,在golang中time包提供了时间的显示和测量用的函数

    2.time.Now()获取当前时间

    可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息

    3.时间格式化

    时间类型有一个自带的方法Format进格式化

    4.获取当前时间戳

    时间戳时自1970年1月1日至当前时间的总秒数。也被称为Unix时间戳

    5.把时间戳转换成日期字符串

    通过time.Unix将时间戳转换成时间对象,再用Format将时间对象转换成指定格式的日期字符串

    6.把日期字符串转换成时间戳

    通过time.ParseInLocation方法将字符串转换成时间对象,再用Unix()方法将时间对象转换成时间戳

    7.时间间隔

    time.Duration是time包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单位,time.Duration表示一段时间间隔,可表示的最长时间段大约290年
    time包中定义的时间间隔类型的常量如下:

    const{
        Nanosecond Duration = 1
        Microsecond         = 1000 * Nanosecond
        Millisecond         = 1000 * Microsecond
        Second              = 1000 * Millisecond
        Minute              = 60 * Second
        Hour                = 60 * Minute
    }
    

    8.时间操作函数

    Add
    在日常编码过程中可能会遇到要求时间+时间间隔的需求,Go语言的时间对象有提供Add方法如下:
    func (t Time) Add(d Duration) Time
    Sub
    求两个时间之间的差值:
    func (t Time) Sub(u Time) Duration
    返回一个时间段t-u。如果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。
    Equal
    func (t Time) Equal(u Time) bool
    判断两个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。这种方法和用t == u不同,这种方法还会比较地点和时区信息
    Before
    func (t Time) Before(u Time) bool

    9.golang定时器

    1.使用time.NewTicker(时间间隔)来设置定时器
    2.time.Sleep(time.Second)来实现定时器

    代码:

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	// timeObj := time.Now()
    	// fmt.Println(timeObj)//2020-10-06 19:11:19.3600858 +0800 +08 m=+0.024364701
    
    	// //2020-10-06 19:11:19
    	// year := timeObj.Year()
    	// month := timeObj.Month()
    	// day := timeObj.Day()
    	// hour := timeObj.Hour()
    	// minute := timeObj.Minute()
    	// second := timeObj.Second()
    	// fmt.Printf("%d-%d-%d %d:%d:%d
    ",year,month,day,hour,minute,second)//2020-10-6 19:14:57
    	// //%02d中的2表示宽度,如果整数不够2列就补上0
    	// fmt.Printf("%d-%02d-%02d %02d:%02d:%02d
    ",year,month,day,hour,minute,second)//2020-10-06 19:15:49
    
    	/*
    		时间类型有一个自带的方法Format进格式化
    		需要注意的是Go语言中格式化时间模板不是常见的Y-m-d H:M:S
    		而是使用Go的诞生时间2006年1月2号15点04分
    
    		2006 年
    		01 月
    		02 日
    		03 时 12小时制/15 时 24小时制
    		04 分
    		05 秒
    	*/
    
    
    	// now := time.Now()
    	// //12小时制
    	// var str = now.Format("2006-01-02 03:04:05")
    	// fmt.Println(str)//2020-10-06 07:22:35
    	
    	// //24小时制
    	// var str1 = now.Format("2006-01-02 15:04:05")
    	// fmt.Println(str1)//2020-10-06 19:25:12
    
    	//获取当前时间戳
    
    	// timeObj := time.Now()
    
    	// unixTime := timeObj.Unix()
    	// fmt.Println("当前时间戳:",unixTime)//当前时间戳: 1601983768
    
    	// unixNaTime := timeObj.UnixNano()//纳秒时间戳
    	// fmt.Println("当前纳秒时间戳:",unixNaTime)//当前纳秒时间戳: 1601983959781877500
    
    
    	//把时间戳转换成日期字符串
    	// unixTime := 1601983768
    	// timeObj := time.Unix(int64(unixTime),0)
    
    	// var str = timeObj.Format("2006-01-02 15:04:05")
    	// fmt.Println(str)//2020-10-06 19:29:28
    
    	//把日期字符串转换成时间戳
    
    	// var str = "2020-10-06 19:29:28"//目标字符串
    	// var sdf = "2006-01-02 15:04:05"//模板
    	// //目标字符串和模板的格式需要保持一致
    
    	// timeObj, _ := time.ParseInLocation(sdf, str, time.Local)
    	// fmt.Println(timeObj)//2020-10-06 19:29:28 +0800 +08
    	// fmt.Println(timeObj.Unix())//1601983768
    
    
    	/*
    		time包中定义的时间间隔类型的常量如下:
    		const{
    			Nanosecond Duration = 1
    			Microsecond         = 1000 * Nanosecond
    			Millisecond         = 1000 * Microsecond
    			Second              = 1000 * Millisecond
    			Minute              = 60 * Second
    			Hour                = 60 * Minute
    		}
    	*/
    
    	// fmt.Println(time.Millisecond)//1ms:表示1毫秒
    	// fmt.Println(time.Second)//1s:表示1秒
    
    
    	//时间操作函数
    	// var timeObj  = time.Now()
    	// fmt.Println(timeObj)//2020-10-06 19:55:45.3618237 +0800 +08 m=+0.013965801
    	// timeObj = timeObj.Add(time.Hour)
    	// fmt.Println(timeObj)//2020-10-06 20:55:45.3618237 +0800 +08 m=+3600.013965801
    
    	//golang定时器
    
    	// ticker := time.NewTicker(time.Second)
    	// n := 5
    	// for t := range ticker.C {
    	// 	n--
    	// 	fmt.Println(t)
    	// 	if n == 0 {
    	// 		ticker.Stop()//终止这个定时器
    	// 		break
    	// 	}
    	// }
    
    	//休眠方法
    	// fmt.Println("aaaa")
    	// time.Sleep(time.Second)
    	// fmt.Println("bbbb")
    	// time.Sleep(time.Second)
    	// fmt.Println("cccc")
    	// time.Sleep(time.Second)
    	// fmt.Println("dddd")
    
    	//死循环
    	for {
    		time.Sleep(time.Second)
    		fmt.Println("我在执行定时任务")
    	}
    
    
    }
    
  • 相关阅读:
    i++ ++i i=i+1 和i+=1
    cmd命令行 端口
    WAS 查看服务状态
    Linux 拷贝
    jar 压缩 解压 war包
    数据结构
    jar包生成exe可执行程序
    03-vant的一些事
    01-watch原理/computed原理
    05-问题集合
  • 原文地址:https://www.cnblogs.com/hanajiang/p/13776499.html
Copyright © 2020-2023  润新知