Time包的使用
常用方法介绍
获取当前时间
-
time.Now()
方法返回值是Time
类型的值,直接输出返回值,得到的结果是默认格式下的时间戳 -
代码展示
//获取当前时间nowTime := time.Now()fmt.Println(nowTime)
获取指定的时间
-
time.Data()
方法的参数包含很多值,包括年月日,时分秒,毫秒微秒,时区 -
返回值是一个指定时间的时间戳,一般用于创建时间戳,用于参与判断等
-
代码展示
AppointTime := time.Date(2020, 11, 25, 0, 0, 0, 0, time.Local)//time.Localfmt.Println(AppointTime)
指定时间输出格式/解析时间字符为时间戳
-
1.使用Time类型中的Format("格式模版")方法转化 2.模版的日期必须是固定的: 06-1-2-3-4-5(年 月 日 时 分 秒)
-
指定时间的输出格式,目的是方便日志记录以及自己查看出现问题的地方
-
主要函数
- Time类型的Format()方法
- 方法参数: 时间格式模版
- 模版的日期必须是固定的: 06-1-2-3-4-5(年 月 日 时 分 秒)
- 意思是说,年的末尾要是6,月是1,日是2…以此类推
- 例如格式:
- 2006年01月02日 03时04分05秒
- 2006-01-02 ,03-04-05
- 2006年01月02日 03:04:05
-
代码展示
time1 := time.Now()FString := time1.Format("2006年01月02日 03时04分05秒")fmt.Println(FString)
-
//解析时间字符串为时间戳 1.使用time包中的Parse("格式模版") 2.格式模版必须和需要解析字符串的模版一致
-
将获得的时间字符串转换成时间戳,方便进行运算,比较等…
-
主要函数
- Time类型的Parse()方法
- 方法参数: 1.模版格式 2.需要转化的时间字符串
- 格式模版必须和需要解析字符串的模版一致
-
代码展示
time2 := "2023年10月09日 01时10分12秒"PTime, err := time.Parse("2006年01月02日 03时04分05秒", time2)if err != nil {fmt.Println(err)}fmt.Println(PTime)
单独获取时间
- 直接代码展示
//单独获取时间time3 := time.Now()//获取年year := time3.Year()//获取月month := time3.Month()//获取日day := time3.Day()//获取时hour := time3.Hour()//获取分minute := time3.Minute()//获取秒second := time3.Second()//获取微秒nanosecond := time3.Nanosecond()//获取时区location := time3.Location()fmt.Println(year, month, day, hour, minute, second, nanosecond, location)//获取年月日time3.Date()//获取时分秒time3.Clock()//获取星期time3.Weekday()//获取今年过去的时间time3.YearDay()
添加时间
-
在获取的时间戳中添加或减少事时间
-
方法
- Time类中的
Add()
方法,参数是一个数值,默认是距离时间戳多少纳秒 - Time类中的
AddDate()
方法,参数是年月日 - 注意: 添加时间(正数表示往后添加,负数表示往前添加)
- Time类中的
-
代码展示
fmt.Println("添加之后的时间", timeData.Add(1*time.Second)) //默认单位是纳秒,也可以自己添加fmt.Println("添加后的时间", timeData.AddDate(1, 2, 3))
计算时间差
-
方法:
- Time类中的
Sub()
方法 - 参数是另外一个Time类型的值
- 返回值是 时间差 ,单位是纳秒
- Time类中的
-
代码展示
fmt.Println("时间的间隔: ", timeData.Sub(time.Now()))
利用时间戳制作随机数的种子
-
使用不断变化的时间戳,制作随机数的种子,使得获取到的随机数更加随机
-
代码展示
-
//随机数值rand.NewSource(time.Now().Unix())fmt.Println("随机数值:", rand.Intn(10)-1)