go时间与日期类型
1.tim包
2.time.Time类型,用来表示时间
3.获取当前时间,now := time.Now()
4.time.Now().Day(),time.Now().Minute(), time.Now().Month(), time.Now().Year()
package main
import(
"fmt"
"time"
)
func main(){
//var now time.Time
//now = time.Now()
now := time.Now()
fmt.Printf("%v\n",now)
fmt.Printf("%02d\n",now.Year())
fmt.Printf("%02d\n",now.Month())
fmt.Printf("%02d\n",now.Day())
fmt.Printf("%02d\n",now.Hour())
fmt.Printf("%02d\n",now.Minute())
fmt.Printf("%02d-%02d-%02d %02d:%02d\n",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute())
fmt.Printf("timestamp:%d NS:%d\n",now.Unix(),now.UnixNano())
}
5.格式化,fmt.Printf("%02d/%02d/%02d/%02d:%02d:%02d",now.Year()...)
package main
import(
"fmt"
"time"
)
func main(){
//var now time.Time
//now = time.Now()
now := time.Now()
fmt.Printf("%v\n",now)
fmt.Printf("%02d\n",now.Year())
fmt.Printf("%02d\n",now.Month())
fmt.Printf("%02d\n",now.Day())
fmt.Printf("%02d\n",now.Hour())
fmt.Printf("%02d\n",now.Minute())
fmt.Printf("%02d-%02d-%02d %02d:%02d\n",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute())
fmt.Printf("timestamp:%d NS:%d\n",now.Unix(),now.UnixNano())
}
6.定时器
testTimer
package main
import(
"fmt"
"time"
)
func testTimer(){
//NewTimer定时器,只触发一次
timer := time.NewTimer(time.Second)
for v := range timer.C {
fmt.Printf("time:%v\n",v)
//必须reset,否则会一直塞
timer.Reset(time.Second)
}
}
func main(){
testTimer()
time.Sleep(time.Minute)
}
testTicker
package main
import(
"fmt"
"time"
)
func testTicker(){
//NewTiecker定时器,每隔一秒触发一次,不用重置定时器
timer := time.NewTicker(time.Second)
for v := range timer.C {
fmt.Printf("time:%v\n",v)
}
}
func main(){
testTicker()
time.Sleep(time.Minute)
}
7.时间戳转成时间格式
now.Unix()转换成正常的时间格式
package main
import(
"fmt"
"time"
)
func timestampToTime(timestamp int64) {
tm := time.Unix(timestamp, 0)
fmt.Printf("timestampToTime:%v\n",tm)
}
func main(){
//var now time.Time
//now = time.Now()
now := time.Now()
fmt.Printf("%v\n",now.Unix())
timestampToTime(now.Unix())
}
8.纳秒:time.Duration用来表示纳秒
9.一些常量
const(
Nanosecond Duration = 1
Microsecond = 1000*Nanosecond
Millisecond = 1000*Microsecond
Second = 1000*Millisecond
Minute = 60 * Sencond
Hour = 60 * Minute
)
10.时间格式化的方法
package main
import(
"fmt"
"time"
)
func main(){
//var now time.Time
//now = time.Now()
//第一种
now := time.Now()
fmt.Printf("%v\n",now.Unix())
fmt.Printf("%02d\n",now.Year())
fmt.Printf("%02d\n",now.Month())
fmt.Printf("%02d\n",now.Day())
fmt.Printf("%02d\n",now.Hour())
fmt.Printf("%02d\n",now.Minute())
fmt.Printf("%02d-%02d-%02d %02d:%02d\n",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute())
fmt.Printf("timestamp:%d NS:%d\n",now.Unix(),now.UnixNano())
//第二种nownow.Format("02/1/2006 15:04:05") Format方案,这个有一个缺点就是时间格式模板必需是golang的诞生日 "02/1/2006 15:04:05"
nownow := time.Now() fmt.Println(nownow.Format("02/1/2006 15:04")) fmt.Println(nownow.Format("2006/01/02 15:04:05")) fmt.Println(nownow.Format("2006/01/02")) }
练习:写一个程序算出这个程序执行完成耗时多长时间
package main
import(
"fmt"
"time"
)
func test() {
//执行一亿次
for i := 0 ;i < 100000000; i++ {
_ = i
}
}
func main(){
//var now time.time()
//now = time.Now()
//start := now.UnixNano(0)
start := time.Now().UnixNano() //开始时间,纳秒
test() //执行 test 函数
end := time.Now().UnixNano() //结束时间,纳秒
fmt.Printf("cost-%d us \n",(end - start)/1000) //结束时间减去开始时间
}
塑造ing
浙公网安备 33010602011771号