持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
一、时间和日期相关函数:
说明:在编程中,程序员会经常使用到日期相关函数,比如:统计某段代码执行花费的时间等等。
- 时间和日期相关函数,需要导入
time包 - time.Time 类型,用于表示时间
- 获取到当前时间的方法:
package main
import (
"fmt"
"time"
)
func main() {
// 看看日期和时间相关函数的使用和方法:
// 1. 获取当前时间:
now := time.Now()
fmt.Printf("now = %v\nnow type = %T", now, now)
}
- 如何获取到其它的日期信息
package main
import (
"fmt"
"time"
)
func main() {
// 看看日期和时间相关函数的使用和方法:
// 1. 获取当前时间:
now := time.Now()
fmt.Printf("now = %v\nnow type = %T", now, now)
// 2. 通过now可以获取到年月日,时分秒
fmt.Printf("年 = %v\n", now.Year())
fmt.Printf("月 = %v\n", now.Month())
fmt.Printf("月 = %v\n", int(now.Month()))
fmt.Printf("日 = %v\n", now.Day())
fmt.Printf("时 = %v\n", now.Hour())
fmt.Printf("分 = %v\n", now.Minute())
fmt.Printf("秒 = %v\n", now.Second())
}
- 格式化日期时间:
package main
import (
"fmt"
"time"
)
func main() {
// 看看日期和时间相关函数的使用和方法:
// 1. 获取当前时间:
now := time.Now()
fmt.Printf("now = %v\nnow type = %T", now, now)
// 格式化日期和时间
// 方式一:
fmt.Printf("当前年月日 %2d-%02d-%02d %02d:%02d:%02d\n", now.Year(),
now.Day(), now.Hour(), now.Day(), now.Second())
datestr := fmt.Sprintf("当前年月日 %2d-%02d-%02d %02d:%02d:%02d\n", now.Year(),
now.Day(), now.Hour(), now.Day(), now.Second())
fmt.Printf("dateStr = %v\n", datestr)
// 方式二:就是一个小彩蛋
fmt.Printf(now.Format("2006/01/02 15:04:25"))
fmt.Println()
fmt.Printf(now.Format("2006-01-02"))
fmt.Println()
fmt.Printf("15:04:25")
fmt.Println()
}
对上面的总结:
- "2006/01/02 15:04:25" 这个字符串的各个数字是固定的,必须是这样写。
- "2006/01/02 15:04:25" 这个字符串各个数字可以自由的组合,这样可以按程序需求来返回时间和日期。
- 时间常量:
- 休眠:
package main
import (
"fmt"
"time"
)
func main() {
// 时间常量:
// 需求1:,每隔1秒钟打印一个数字,打印到100时就退出:
// 需求2:
i := 0
for {
i++
fmt.Println(i)
// 休眠
// time.Sleep(time.Second)
time.Sleep(time.Millisecond * 100)
if i == 100 {
break
}
}
}
常量的作用:在程序中可用于获取指定时间单位的时间,比如想得到 100 毫秒 100 * time.Millisecond
- 获取当前 unix 时间戳 和 unixnano 时间戳 (作用是可以获取随机数字)
package main
import (
"fmt"
"time"
)
func main() {
// 获取当前时间:
now := time.Now()
// uninx 和 uninxNano 的使用
fmt.Printf("unix 时间戳 = %v , uninNano时间戳 = %v", now.Unix(), now.UnixNano())
}
二、最佳实践案例:
编写一段代码来统计,函数test03执行的时间
package main
import (
"fmt"
"strconv"
"time"
)
func test03() {
str := ""
for i := 0; i < 100000; i++ {
str += "hello" + strconv.Itoa(i)
}
}
func main() {
// 在执行 test 03 前,先获得到当前的 unix 时间戳
start := time.Now().Unix()
test03()
end := time.Now().Unix()
fmt.Printf("执行test()耗费时间为:%v秒\n", end-start)
}