Go时间

package main

import (
	"time"
	"fmt"
	"math/rand"
)

func main() {
	/*
	time包:
		1年=365天,day
		1天=24小时,hour
		1小时=60分钟,minute
		1分钟=60秒,second
		1秒钟=1000毫秒,millisecond
		1毫秒=1000微秒,microsecond-->μs
		1微秒=1000纳秒,nanosecond-->ns
		1纳秒=1000皮秒,picosecond-->ps
	 */

	//1.获取当前的时间
	t1 := time.Now()
	fmt.Printf("%T\n",t1) //time.Time
	fmt.Println(t1) //2019-06-26 10:46:40.349196 +0800 CST m=+0.000495846

	//2.获取指定的时间
	t2 := time.Date(2008,7,15,16,30,28,0,time.Local)
	fmt.Println(t2) //2008-07-15 16:30:28 +0800 CST

	//3.time-->string之间的转换
	/*
	t1.Format("格式模板")-->string
		模板的日期必须是固定:06-1-2-3-4-5
	 */
	s1 := t1.Format("2006-1-2 15:04:05") //模板
	fmt.Println(s1) //2020-2-2 07:52:44

	s2 := t1.Format("2006/01/02") //模板
	fmt.Println(s2) //2020/02/02

	//string-->time
	/*
	time.Parse("模板",str)-->time,err
	 */
	s3 := "1999年10月10日"//string
	t3 ,err := time.Parse("2006年01月02日",s3)
	if err != nil{
		fmt.Println("err:",err)
	}
	fmt.Println(t3) //1999-10-10 00:00:00 +0000 UTC
	fmt.Printf("%T\n",t3) //time.Time

	fmt.Println(t1.String()) //2020-02-02 07:52:44.1887023 +0800 CST m=+0.002992701

	//4.根据当前时间,获取指定的内容
	year,month,day :=  t1.Date() //年,月,日
	fmt.Println(year,month,day) //2020 February 2

	hour,min,sec := t1.Clock() //时,分,秒
	fmt.Println(hour,min,sec) //7 52 44

	year2 := t1.Year()
	fmt.Println("年:",year2) //年: 2020
	fmt.Println(t1.YearDay()) //33

	month2 := t1.Month()
	fmt.Println("月:",month2) //月: February
	fmt.Println("日:",t1.Day()) //日: 2
	fmt.Println("时:",t1.Hour()) //时: 7
	fmt.Println("分钟:",t1.Minute()) //分钟: 52
	fmt.Println("秒:",t1.Second()) //秒: 44
	fmt.Println("纳秒:",t1.Nanosecond()) //纳秒: 188702300

	fmt.Println(t1.Weekday()) //Sunday

	//5.时间戳:指定的日期,距离1970年1月1日0点0时0分0秒的时间差值:秒,纳秒
	t4 := time.Date(1970,1,1,1,0,0,0,time.UTC)
	timeStamp1:=t4.Unix() //秒的差值
	fmt.Println(timeStamp1)//3600
	timeStamp2 := t1.Unix()
	fmt.Println(timeStamp2) //1580601164

	timeStamp3 := t4.UnixNano()
	fmt.Println(timeStamp3) //3600 000 000 000
	timeStamp4 := t1.UnixNano()
	fmt.Println(timeStamp4) //1580601164188702300

	//6.时间间隔
	t5 := t1.Add(time.Minute)
	fmt.Println(t1) //2020-02-02 07:52:44.1887023 +0800 CST m=+0.002992701
	fmt.Println(t5) //2020-02-02 07:53:44.1887023 +0800 CST m=+60.002992701
	fmt.Println(t1.Add(24 * time.Hour))
	//2020-02-03 07:52:44.1887023 +0800 CST m=+86400.002992701

	t6 := t1.AddDate(1,0,0)
	fmt.Println(t6) //2021-02-02 07:52:44.1887023 +0800 CST

	d1 := t5.Sub(t1)
	fmt.Println(d1) //1m0s

	//7.睡眠
	time.Sleep(3 *time.Second) //让当前的程序进入睡眠状态
	fmt.Println("main。。。over。。。。。")

	//睡眠[1-10]的随机秒数
	rand.Seed(time.Now().UnixNano())
	randNum := rand.Intn(10) + 1 //int
	fmt.Println(randNum) //10
	time.Sleep(time.Duration(randNum)*time.Second)
	fmt.Println("睡醒了。。")
}

  

posted @ 2020-02-02 08:03  1769987233  阅读(107)  评论(0)    收藏  举报