Go语言标准库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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package main

import (
"fmt"
"time"
)

//time.Unix() 将时间戳转换为时间格式
func timestamp2Time(timestamp int64) {
timeObj := time.Unix(timestamp, 0) //将时间戳转换为时间格式
fmt.Printf("当前时间: \n", timeObj)
//年
fmt.Println(timeObj.Year())
//月
fmt.Println(timeObj.Month())
//日
fmt.Println(timeObj.Day())
//时
fmt.Println(timeObj.Hour())
//分
fmt.Println(timeObj.Minute())
//秒
fmt.Println(timeObj.Second())
}

func tickDemo() {
ticker := time.Tick(time.Second)
for i := range ticker {
//每秒执行一次
fmt.Println(i)
}
}

func main() {
//now := time.Now()
//fmt.Printf("当前时间: \n", now)
////年
//fmt.Println(now.Year())
////月
//fmt.Println(now.Month())
////日
//fmt.Println(now.Day())
////时
//fmt.Println(now.Hour())
////分
//fmt.Println(now.Minute())
////秒
//fmt.Println(now.Second())
////时间戳
//fmt.Println(now.Unix())
////纳秒时间戳
//fmt.Println(now.UnixNano())
//timestamp2Time(1573626296)

//time.Duration 是time包定义的一个类型 表示2个时间点经过的时间 纳秒为单位
//表示1纳秒
//time.Duration()
//表示1秒
//time.Second
//表示1分钟
//time.Minute
//表示1小时
//time.Hour

//time.Sleep(time.Second*5)
//fmt.Println("睡了5秒~")

//时间操作
// Add 函数 时间 + 时间间隔
//func (t Time) Add(d Duration) Time
//later := now.Add(time.Hour)
//fmt.Println(later)

//Sub 函数 请两个时间之间差值
//func (t Time) Sub(u Time) Duration
//返回 t - u 时间差值

//Equal 函数 判断两个时间是否相同 不同时区也可以正常比较
//func (t Time) Equal(u Time) bool

//Before 函数
//func (t Time) Before(u Time) bool t表示时间在u之前返回真 否则为假

//After 函数
//func (t Time) After(u Time) bool t表示时间在u之后返回真 否则为假

//定时器
//time.Tick(d Duration) 定时器本质是一个通道(channel)
//tickDemo()

//时间格式化
//时间类型有Format方法进行格式化
//格式化模板 Go出生时间2006年1月2号15点04分05秒.000 Mon Jan
//fmt.Println(now.Format("2006-01-02 15:04:05 Mon Jan"))
//fmt.Println(now.Format("2006-01-02 03:04:05 PM Mon"))
//fmt.Println(now.Format("2006/01/02"))

//字符串时间转时间类型
//loc, err := time.LoadLocation("Asia/Shanghai")
//if err != nil {
// fmt.Println(err)
// return
//}
//timeObj, err := time.ParseInLocation("2006-01-02 15:04:05", "2019-11-02 15:04:05", loc)
//if err != nil {
// fmt.Println(err)
// return
//}
//fmt.Println(timeObj)
//fmt.Println(timeObj.Sub(now))

//练习
//fmt.Println(now.Format("2006/01/02 15:04:05"))

start := time.Now()
fmt.Println("代码执行中……")
fmt.Println("代码执行中……")
fmt.Println("代码执行中……")
fmt.Println("代码执行中……")
fmt.Println("代码执行中……")
fmt.Println("代码执行中……")
//time.Sleep(time.Second*2)
dr := time.Now().Sub(start)
//fmt.Printf("%T", dr)
fmt.Printf("程序执行了%d微秒", dr.Microseconds())
}