文章目录
- 基本用法
- 定时器
- 时间戳
- 格式化时间
- 练习
基本用法
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now() // 返回是一个结构体
fmt.Printf("%#v\n", now) // time.Time{wall:0xbf37fcc65da58dc8, ext:248909, loc:(*time.Location)(0x1174d00)}
// 结构体可以使用以下方法
fmt.Println(now.Year()) // 年 2019
fmt.Println(now.Month()) // 月 June
fmt.Println(now.Day()) // 日 12
fmt.Println(now.Hour()) // 时 11
fmt.Println(now.Minute()) // 分 42
fmt.Println(now.Second()) // 秒 21
fmt.Println(now.Nanosecond()) // 纳秒 706973000
fmt.Println(now.Date()) // 日期 2019 June 12
fmt.Println(now.Sleep(time.Second)) // 使程序睡眠
// 手动指定时区时间
cstZone := time.FixedZone("CST", 8*3600) // 东八
fmt.Println(time.Now().In(cstZone))
zone, _ := time.LoadLocation("Asia/Shanghai")
fmt.Println(time.Now().In(zone))
}
定时器
package main
import (
"fmt"
"time"
)
// 定时器函数
func ticker() {
ticker := time.Tick(time.Second) // 定义一个一秒间隔的定时器
for i := range ticker {
fmt.Println(i)
}
}
func main() {
ticker()
}
时间戳
package main
import (
"fmt"
"time"
)
func main() {
// 根据当前时间得到时间戳
timeStamp := time.Now().Unix() // 秒级时间戳
nanoTimeStamp := time.Now().UnixNano() // 纳秒级时间戳
fmt.Println(timeStamp, nanoTimeStamp)
// 根据时间戳获取时间
timeObj := time.Unix(1000000000, 0) // 这个结构体和 time.Now() 得到的结构体一样
fmt.Println(timeObj.Date())
}
格式化时间
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
// go语言的诞生日期 2006 12345
// 2006(表示年)-(连接符)01(表示月)-02(表示天) 15(表示时):(连接符)04(分):05(秒):000(毫秒)
ret := now.Format("2006/1/2 15:04:05")
fmt.Println(ret)
}
练习
package main
import (
"fmt"
"time"
)
func p() int {
start := time.Now().Second()
time.Sleep(time.Second * 5)
fmt.Println("func P")
end := time.Now().Second()
return end - start
}
func main() {
fmt.Printf("p 函数共耗时: %v 秒\n", p())
}