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)   //结束时间减去开始时间
}

  

    

 

  

 

posted @ 2018-07-13 16:28  Brin.Guo  阅读(249)  评论(0)    收藏  举报