time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。)
func Now() Time
代码演示:
// 返回当前本地时间
now := time.Now()
fmt.Printf("now = %v\n", now) // 输出本地时间
fmt.Printf("now type = %T\n", now) // 输出now类型
输出:
now = 2020-11-29 16:04:17.130252 +0800 CST m=+0.003998901
now type = time.Time
代码演示:
// 通过now获取年月日时分秒
fmt.Printf("年:%v\n", now.Year()) // 获取 年
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()) // 获取 秒
输出:
年:2020
月:11
月:29
时:16
分:20
时:34
注意:英文的月份转换成数字,用int()函数即可!
利用format方法返回采用如下格式字符串的格式化时间。
“2006-01-02 15:04:05”
代码演示:
// 格式化日期时间 “2006-1-2 15:04:05"
fmt.Println(now.Format("2006-01-02 15:04:05"))
fmt.Println(now.Format("2006/01/02 15:04:05")) // 返回格式化后的年月日时分秒
fmt.Println(now.Format("2006/01/02")) // 返回格式化后的年月日
fmt.Println(now.Format("15:04:05")) // 返回格式化后的时分秒
fmt.Println(now.Format("2006")) // 返回格式化后的年
注:2006 01 02 15 04 05 数字顺序必须不变,但是至于中间用“-”连接还是用“/”连接 ,并没有特定要求。
至于为什么非要固定用“2006-01-02 15:04:05”来格式化日期,我查找了相关资料,发现其中一条比较靠谱的:
这是采用美国的日期时间格式化方式:01/02 03:04:05PM '06 -0700
1月2号下午3点4分5秒,06年,时区是-7,初衷是更便于记忆。
题目:编写一段代码来统计 函数test03执行的时间
func test03() {
str := ""
for i := 0; i < 100000; i++ {
str += "hello" + strconv.Itoa(i)
}
代码演示:
func test03() {
str := ""
for i := 0; i < 100000; i++ {
str += "hello" + strconv.Itoa(i)
}
}
func main() {
now1 := time.Now()
fmt.Println("开始时间为:", now1.Format("2006-01-02 15:04:05"))
test03()
now2 := time.Now()
fmt.Println("结束时间为:", now2.Format("2006-01-02 15:04:05"))
time := now2.Sub(now1)
fmt.Println("这段代码的运行时长为:", time)
}
输出结果:
开始时间为: 2020-12-01 11:29:55
结束时间为: 2020-12-01 11:30:02
这段代码的运行时长为: 7.7712177s
注:Sub()函数两个时间点相减,获得时间差。