时间函数

时间和日期相关函数

说明:在编程中,程序员会经常使用到日期相关的函数,比如:统计某段代码执行花费的时间等
等。

1) 时间和日期相关函数,需要导入 time 包

2) time.Time 类型,用于表示时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main
import (
"fmt"
"time"
)

func main() {
//看看日期和时间相关函数和方法使用
//1. 获取当前时间
now := time.Now()
fmt.Printf("now=%v now type=%T\n", 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())

//格式化日期时间

fmt.Printf("当前年月日 %d-%d-%d %d:%d:%d \n", now.Year(),
now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())

dateStr := fmt.Sprintf("当前年月日 %d-%d-%d %d:%d:%d \n", now.Year(),
now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())

fmt.Printf("dateStr=%v\n", dateStr)

//格式化日期时间的第二种方式
fmt.Printf(now.Format("2006-01-02 15:04:05"))
fmt.Println()
fmt.Printf(now.Format("2006-01-02"))
fmt.Println()
fmt.Printf(now.Format("15:04:05"))
fmt.Println()

fmt.Printf(now.Format("2006"))
fmt.Println()


//需求,每隔1秒中打印一个数字,打印到100时就退出
//需求2: 每隔0.1秒中打印一个数字,打印到100时就退出
// i := 0
// for {
// i++
// fmt.Println(i)
// //休眠
// //time.Sleep(time.Second)
// time.Sleep(time.Millisecond * 100)
// if i == 100 {
// break
// }
// }



}

3)时间常量

1
2
3
4
5
6
7
8
const (
Nanosecond Duration = 1 //纳秒
Microsecond = 1000 * Nanosecond //微秒
Millisecond = 1000 * Microsecond //毫秒
Second = 1000 * Millisecond //秒
Minute = 60 * Second //分钟
Hour = 60 * Minute //小时
)

常量的作用: 在程序中可用于获取指定时间单位的时间,比如想得到 100 毫秒
100 * time. Millisecond

4)结合 Sleep 来使用一下时间常量

1
2
3
4
5
6
7
8
9
10
11
12
13
//需求,每隔一秒钟打印一个数字,打印到100时退出
//需求2:每隔0.1秒钟打印一个数字,打印到100时就退出
i:= 0
for {
i++
fmt.println(i)
//休眠
//time.Sleep(time.second)
time.Sleep(time.Millisecond * 100)
if i == 100 {
break
}
}

5) time 的 Unix 和 UnixNano 的方法

1
2
//Unix和UnixNano的使用
fmt.Printf("unix时间戳=%v unixnano时间戳=%v\n", now.Unix(), now.UnixNano())

6)时间和日期的课堂练习

编写一段代码来统计 函数 test03 执行的时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main
import (
"fmt"
"time"
"strconv"
)

func test03() {

str := ""
for i := 0; i < 100000; i++ {
str += "hello" + strconv.Itoa(i)
}
}

func main() {
//在执行test03前,先获取到当前的unix时间戳
start := time.Now().Unix()
test03()
end := time.Now().Unix()
fmt.Printf("执行test03()耗费时间为%v秒\n", end-start)
}