GoLang学习笔记(二十七)time包的常用函数及方法

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

为了等下的代码能更好的理解,先写一个print函数

func printTime(i string, t time.Time) {
	fmt.Println(i, t)
}

time包的函数及方法:

基础用法:

t1 := time.Now()
printTime("当前时间:", t1)
printTime("将时间转换为本地时区时间:", t1.Local())
printTime("将时间转换成UTC和零时区(国际统一时间)", t1.UTC())

使用Date函数,指定数值,返回一个设定的时间:

t2 := time.Date(2012, time.March, 29, 9, 15, 0, 0, time.Local)
printTime("测试Date()方法:", t2)

通过Parse函数来格式化一个时间样式,layout是模板,value是值,且layout时间必须是2006年1月2日15点4分5秒,不管时间是用的哪个格式,返回的是一个UTC的时间。

t3, _ := time.Parse("2006-01-02 15:04:05", "2018-01-01 09:12:37")
printTime("使用parse函数:", t3)

使用Formant方法格式化当前时间,layout时间必须是2006年1月2日15点4分5秒,不管时间是用的哪个格式。

fmt.Println("使用Formant方法格式化当前时间:", time.Now().Format("2006-01-02 15:04:05"))

使用String将时间转换成字符串

fmt.Println("使用String方法格打印当前时间:", time.Now().String())

使用Unix方法将时间转换为Unix时间,即从时间点1970年1月1日0时0分0秒UTC到指定时间的秒数

fmt.Println("使用Unix方法获得秒数:", t3.Unix())

使用UnixNano方法将时间转换为Unix时间,即从时间点1970年1月1日0时0分0秒UTC到指定时间的纳秒数

fmt.Println("使用UnixNano方法获得纳秒数:", t3.UnixNano())

使用Equal方法,判断时间是否相等

fmt.Println("使用Equal方法判断时间是否相等:", t3.Equal(time.Now())) //false

使用Before方法,判断时间是否在某个时间之前

fmt.Println("使用Before方法判断t2是否在t3之前:", t2.Before(t3)) //true

使用After方法,判断时间是否在某个时间之后

fmt.Println("使用After方法判断t2是否在t3之后:", t2.After(t3)) //false

使用Date方法,返回指定的时间对应的年月日信息,月打印出来是英文单词。

y1, m1, d1 := time.Now().Date()
fmt.Printf("使用Date方法获取当前是:%v年%v月%v日 \n", y1, m1, d1)

使用Year方法返回对应的年信息

fmt.Println("使用Year方法返回的年是:", time.Now().Year())

使用Month方法返回对应的月信息,返回的月信息是英文单词。

fmt.Println("使用Month方法返回的月是:", time.Now().Month())

使用Day方法返回对应的日信息

fmt.Println("使用Day方法返回的日是:", time.Now().Day())

使用Cluck方法返回指定的时间的小时,分,秒

h1, min1, s1 := time.Now().Clock()
fmt.Printf("使用Clock方法获取当前是:%v时%v分%v秒 \n", h1, min1, s1)
fmt.Println("使用Hour方法返回的小时是:", time.Now().Hour())
fmt.Println("使用Minute方法返回的分钟是:", time.Now().Minute())
fmt.Println("使用Second方法返回的秒是:", time.Now().Second())
fmt.Println("使用NanoSecond方法返回的纳秒是:", time.Now().Nanosecond())

使用Sub方法返回一个时间段,仅显示小时、分钟、秒,及Sub下的几个方法。

fmt.Println("使用Sub方法算出t2到现在的时间:", time.Now().Sub(t2))
//使用Hours方法将Sub方法获得的时间转换为小时为单位的int64值
fmt.Println("使用Hours方法算出t2到现在的时间:", time.Now().Sub(t2).Hours(), "小时")
//使用Minuter方法将Sub方法获得的时间转换为分钟为单位的int64值
fmt.Println("使用Minutes方法算出t2到现在的时间:", time.Now().Sub(t2).Minutes(), "分钟")
//使用Seconds方法将Sub方法获得的时间转换为秒为单位的int64值
fmt.Println("使用Seconds方法算出t2到现在的时间:", time.Now().Sub(t2).Seconds(), "秒")
//使用Seconds方法将Sub方法获得的时间转换为纳秒为单位的int64值
fmt.Println("使用Nanoseconds方法算出t2到现在的时间:", time.Now().Sub(t2).Nanoseconds(), "纳秒")
//使用String方法返回时间段采用"01h02m03s格式的字符串
fmt.Println("使用String方法打印t2到现在时间的字符串:", time.Now().Sub(t2).String())

使用ParseDuration解析一个时间段字符串。
一个时间段字符串是一个序列,每个片段包含可选的正负号、十进制数、可选的小数部分和单位后缀,如"300ms"、"-1.5h"、"2h45m"。
合法的单位有"ns"、"us" /"µs"、"ms"、"s"、"m"、"h"。

d3, _ := time.ParseDuration("300h")
fmt.Printf("通过ParseDuration函数,解析出来的时间段,类型为:%T,数值为:%v \n", d3, d3)

使用Add方法获得一个时间加上指定时间段

fmt.Println("t2加上d3是:",t2.Add(d3))

使用AddDate方法,在指定时间上,加上一个年月日,获得日期。

fmt.Println("t2过上10年是",t2.AddDate(10,0,0))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值