time包
一、时间类型
1.time.time
用来表示时间
2.time.Now()
:获取当前时间
示例:
func timeDemo() {
now := time.Now() //获取当前时间
fmt.Println(now) //打印当前时间
//获取时间对象的信息
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
//02表示进行格式化时间
fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
//运行结果:
//2020-03-04 09:33:18.0425102 +0800 CST m=+0.006000401
//2020-03-04 09:33:18
}
二、时间戳
1.时间戳:自1970年1月1日(08:00:00GMT)至当前时间的总毫秒数
示例
2.时间戳转换为时间格式:time.Unix()
func timestampDemo() {
timestamp1 := now.Unix() //毫秒时间戳
fmt.Println(timestamp1)
timestamp2 := now.UnixNano() //纳秒时间戳
fmt.Println(timestamp2)
timeObj := time.Unix(timestamp1, 0) // 将时间戳转换成时间格式
fmt.Println(timeObj)
//运行结果
//1583286743
//1583286743772042100
//2020-03-04 09:52:23 +0800 CST
}
三、时间间隔
1.time.Duration
是一种类型
2.time包定义的时间间隔类型的常量如下:
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)
func main() {
fmt.Println(time.Nanosecond) //1ns
fmt.Println(time.Duration(1)) //1ns
fmt.Println(time.Second) //1s
}
四、时间操作
1.Add:时间加时间间隔
示例:
func main() {
now := time.Now()
later := now.Add(time.Hour) //当前时间加1小时后的时间
fmt.Println(later)
//运行结果:
//2020-03-04 11:13:51.0066678 +0800 CST m=+3600.005000301
}
2.Sub与解释字符串格式的时间
2.1:LoadLocation是time包里面的一个构造函数,主要用于查找地区及返回地区名的指针
2.2:ParseInLocation主要用于按照指定格式,指定地区进行时间的格式化
示例:
func main() {
now := time.Now()
fmt.Println(now)
// 加载时区
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
fmt.Println(err)
return
}
// 按照指定时区和指定格式化时间
timeObj, 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(timeObj)
fmt.Println(now.Sub(timeObj)) //当前时间减去timeObj时间的差值
//运行结果
//2020-03-04 10:37:11.7807875 +0800 CST m=+0.004000301
//2019-08-04 14:15:20 +0800 CST
//5108h21m51.7807875s
}
…欠缺
五、时间格式化
1.时间格式化方法:Format
2.go语言中的时间格式化模板为go的诞生时间:2006年01月02日15点04分05秒
示例:
func main() {
now := time.Now() //获取当前时间
fmt.Println(now.Format("2006/01/02 15:04:05")) //时间格式化(24小时制)
fmt.Println(now.Format("2006-01-02 03:04:05 PM")) //时间格式化(12小时制)
//运行结果
//2020/03/04 10:21:31
//2020-03-04 10:21:31 AM
}
练习
计算运行一段代码的时间,时间单位:微秒
package main
import "fmt"
//定义一个测试函数
func test() {
var sum int
for i := 0; i < 1000000; i++ {
sum += i
}
}
func main() {
start := time.Now().UnixNano() //获取当前时间转换成时间戳的纳秒
test() //运行测试代码
end := time.Now().UnixNano() //获取运行后代码时间转换成时间戳的纳秒
sub := end - start //差值
fmt.Println(sub / 1000) //单位转换成微秒
//运行结果
//33001
}