Go time 包

package main

import (
	"fmt"
	"time"
)

func main(){
	//time.Time代表一个纳秒精度的时间点
	var t time.Time

	//返回当前时间
	t = time.Now()
	fmt.Printf("%v
", t)

	//返回所在时区:Local
	fmt.Printf("%v
", t.Location())

	//返回UTC时间和UTC时区
	fmt.Printf("%v %v
", t.UTC(), t.UTC().Location())

	//同上,In()返回指定时区的时间
	fmt.Printf("%v %v
", t.In(time.UTC), t.In(time.UTC).Location())

	//返回当地时区的时间
	fmt.Printf("%v %v
", t.Local(), t.Local().Location())

	//根据时间戳返回本地时间,参数分别表示秒数和纳秒数
	// fmt.Println(time.Now().Unix())
	t2 := time.Unix(1593514197, 0)
	fmt.Println(t2)

    //根据指定时间返回time.Time,分别指定年,月,日,时,分,秒,纳秒,时区
	t3 := time.Date(2019, time.Month(5), 26, 15, 30, 20, 0, t.Location())
	fmt.Println(t3)

	//获取时间信息
	t4 := time.Now()
	//返回日期
	fmt.Println(t4.Date())
	//返回年
	fmt.Println(t4.Year())
	//返回月
	fmt.Println(t4.Month())
	//返回日
	fmt.Println(t4.Day())
	//返回星期
	fmt.Println(t4.Weekday())
	//返回ISO 9601标准下的年份和星期编号
	fmt.Println(t4.ISOWeek())
	//返回时分秒
	fmt.Println(t4.Clock())
	//返回小时
	fmt.Println(t4.Hour())
	//返回分钟
	fmt.Println(t4.Minute())
	//返回秒
	fmt.Println(t4.Second())
	//返回纳秒
	fmt.Println(t4.Nanosecond())
	//返回一年中对应的天
	fmt.Println(t4.YearDay())
	//返回时区的规范名,时区相对于UTC的时间偏移量(秒)
	fmt.Println(t4.Zone())
	//返回时间戳
	fmt.Println(t4.Unix())
	//返回纳秒时间戳
	fmt.Println(t4.UnixNano())

	//格式化输出时间:2017-10-23 19:16:25
	t5 := time.Now()
	fmt.Println(t5)
	fmt.Println(t5.Format("2006-01-02 15:04:05"))

	//时间的比较与计算
	t6 := time.Now()
	//是否零时时间:false
	fmt.Println(t6.IsZero())
	//t6时间在t5时间之后,返回真:true
	fmt.Println(t6.After(t5))
	//t5时间在t6时间之前,返回真:true
	fmt.Println(t5.Before(t6))
	//时间是否相同:false
	fmt.Println(t6.Equal(t5))
	//返回t6加上纳秒的时间:
	fmt.Println(t6.Add(100000))
	//返回两个时间之差的纳秒数:6.382µs
	fmt.Println(t6.Sub(t5))
	//返回t6加1年,1月,1天的时间
	fmt.Println(t6.AddDate(1, 1, 1))


	//时间的序列化
	t7 := time.Now()

	//序列化二进制
	bin, _ := t7.MarshalBinary()

	//反序列化二进制:2017-10-23 19R:16:25.383923 +0800 CST
	t7.UnmarshalBinary(bin)
	fmt.Println(t7)

	//序列化json:"2017-10-23T19:16:25.383923+08:00"
	json, _ := t7.MarshalJSON()
	fmt.Println(string(json))

	//反序列化json:2017-10-23 19:16:25.383923 +0800 CST
	t7.UnmarshalJSON(json)
	fmt.Println(t7)

	//序列化文本:2017-10-23T19:16:25.383923+08:00
	txt, _ := t7.MarshalText()
	fmt.Println(string(txt))

	//反序列化文本:2017-10-23 19:16:25.383923 +0800 CST
	t7.UnmarshalText(txt)
	fmt.Println(t7)

	//gob编码:2017-10-23 19:16:25.383923 +0800 CST
	gob, _ := t7.GobEncode()
	t7.GobDecode(gob)
	fmt.Println(t7)

	//时间段time.Duration
	dur := time.Duration(6666666600000)

	//返回字符串表示:1h51m6.6666s
	fmt.Println(dur.String())

	//返回小时表示:1.8518518333333334
	fmt.Println(dur.Hours())

	//返回分钟表示:111.11111
	fmt.Println(dur.Minutes())

	//返回秒表示:6666.6666
	fmt.Println(dur.Seconds())

	//返回纳秒表示:6666666600000
	fmt.Println(dur.Nanoseconds())

	//时区time.Location,返回时区名:local
	fmt.Println(time.Local.String())

	//通过地点名和时间偏移量返回时区:Shanghai
	fmt.Println(time.FixedZone("Shanghai", 800))

	//通过给定时区名称,返回时区:Asia/Shanghai
	loc, _ := time.LoadLocation("Asia/Shanghai")
	fmt.Println(loc)

	//阻塞当前进程3秒
	time.Sleep(time.Second * 3)

	//定时器time.Timer,创建一个1秒后触发定时器
	timer1 := time.NewTimer(time.Second * 1)
	<-timer1.C
	fmt.Println("timer1 end")

	//1秒后运行函数
	time.AfterFunc(time.Second * 1, func() {
			fmt.Println("wait 1 second")
	})
	time.Sleep(time.Second * 3)

	//打点器time.Ticker,创建一个打点器,在固定1秒内重复执行
	ticker := time.NewTicker(time.Second)
	num := 1
	for {
	    if num > 5 {
	         ticker.Stop()
		   break
	    }
	       select {
	      case <-ticker.C:
		 num++
		  fmt.Println("1 second...")
		}
	}
}

  

原文地址:https://www.cnblogs.com/honglingjin/p/13215471.html