大家好,欢迎来到IT知识分享网。
1.获取当前时间
// 获取当前时间,返回的是Time类型
t := time.Now()
fmt.Println(t)
2.获取时间戳
1970-01-01开始经过的秒数。
// 获取当前时间的时间戳
s := time.Now().Unix()
// 获取某个Time时间的时间戳。
// t是Time类型对象
s := t.Unix()
3.格式化时间
如何将Time类型转换成我们想要的字符串时间格式。
// 获取当前时间 t := time.Now() // 按指定格式,格式化时间 s := t.Format("2006-01-02 15:04:05") fmt.Println(s) // 返回年月日 year, month, day := t.Date() // 返回是时分秒 hour,minute,sec := t.Clock() // 返回星期几,从0开始 weekday := t.Weekday() // 可以转换成整数 fmt.Println(int(weekday))
输出:
2019-09-15 10:43:14
格式化时间主要通过Time对象的Format函数处理。
函数定义:
func (t Time) Format(layout string) string
只有一个参数layout,layout就是指定我们需要格式化时间的模版。
下面是Time包预定于的时间模版:
const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" // 使用数字表示时区的RFC822 RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // 使用数字表示时区的RFC1123 RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" )
使用例子:
t := time.Now()
// 使用预定义的时间模版time.RFC3339
fmt.Println(t.Format(time.RFC3339))
输出:
2019-09-15T10:50:03+08:00
时间模版里面的参数不能随便书写,建议大家根据上面预定义的时间模版,进行修改。
例子:
// 获取当前时间
t := time.Now()
// 只需要格式化年月日
tpl1 := "2006-01-02" fmt.Println(t.Format(tpl1)) // 只需要格式化输出时间 tpl2 := "15:04:05" fmt.Println(t.Format(tpl2))
4.时间戳和日期互转
go的Time时间类型可以转换成时间戳,也能转换成字符串日期类型,因此我们只要将时间戳或者日期时间(字符串)转换成Time类型,即可完成自由转换。
4.1. 时间戳转日期
// 将时间戳转换成Time类型
// 第一个参数是时间戳(毫秒),第二个参数是纳秒,设置0即可
t := time.Unix(1568516266,0)
// 将Time转换成我们想要的日期格式。
s := t.Format("2006-01-02 15:04:05") fmt.Println(s)
4.2. 日期转时间戳
// 将日期转换成Time类型 // 获取本地时区,重要 loc, _ := time.LoadLocation("Local") // 指定我们要解析的时间模版 l := "2006-01-02 15:04:05" // 调用ParseInLocation函数,将日期格式转换成Time类型 t, _ := time.ParseInLocation(l, "2019-09-15 10:57:46", loc) // 将Time转换成时间戳 s := t2.Unix() fmt.Println(s)
5.时间计算
项目中经常需要计算时间的前一天、后一天、前一周、上一月。
Time类型常用的时间计算函数:
- Add – 返回增加指定时间的Time
- AddDate – 返回增加指定的年份、月份和天数的时间点Time
- Sub – 返回两个Time类型相减的时间间隔(Duration类型)
5.1. Add
函数定义:
func (t Time) Add(d Duration) Time
Add返回时间点t+d。
例子:
t := time.Now()
// 计算前一分钟,当前时间加上负一分钟
t1 := t.Add(-time.Minute)
5.2. AddDate
函数定义:
func (t Time) AddDate(years int, months int, days int) Time
AddDate返回增加了给出的年份、月份和天数的时间点Time。
例子:
t := time.Now()
// 计算前一天, 当前时间加上0年,0月,-1天
t1 := t.AddDate(0,0,-1)
// 计算上一个月时间,当前时间加上0年,-1月,0天
t1 := t.AddDate(0,-1,0)
5.3. Sub
函数定义:
func (t Time) Sub(u Time) Duration
返回一个时间段t-u。如果结果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。要获取时间点t-d(d为Duration),可以使用t.Add(-d)。
例子:
t := time.Now()
// 计算前一天
t1 := t.AddDate(0,0,-1) // 两个时间相减 s := t.Sub(t1) // 因为时间间隔使用的是Duration类型,我们可以将时间单位转换成小时 h := int(s/time.Hour) // 也可以换成成其他单位,只要除于指定的时间常量即可: // - Second 秒 // - Minute 分钟 // - Hour 小时 fmt.Println(h)
6. 时间比较
Time类型常用的时间比较函数如下:
- Equal – 比较两个时间是否相等
- Before – 相当于小于比较
- After – 相当于大于比较
例子:
t := time.Now()
// 计算前一天 t1 := t.AddDate(0,0,-1) if t.Equal(t1) { fmt.Println("时间相等") } if t1.Before(t) { fmt.Println("时间t1 < t") } if t.After(t1) {
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33777.html