package main

import (
        "fmt"
        "time"
)

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

        //返回当前时间:2017-10-23 19:16:25.3599073 +0800 CST
        t = time.Now()
        fmt.Printf("%v\n", t)

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

        //返回UTC时间和UTC时区:2017-10-23 11:16:25.3599073 +0000 UTC UTC
        fmt.Printf("%v %v\n", t.UTC(), t.UTC().Location())

        //同上,In()返回指定时区的时间:2017-10-23 11:16:25.3599073 +0000 UTC UTC
        fmt.Printf("%v %v\n", t.In(time.UTC), t.In(time.UTC).Location())

        //返回当地时区的时间:2017-10-23 19:16:25.3599073 +0800 CST Local
        fmt.Printf("%v %v\n", t.Local(), t.Local().Location())

        //根据时间戳返回本地时间,参数分别表示秒数和纳秒数
        //2017-02-23 00:13:30 +0800 CST
        t2 := time.Unix(1487780010, 0)
        fmt.Println(t2)

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

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

        //获取时间信息:2017 October 23
        t5 := time.Now()

        //返回日期:2017 October 23
        fmt.Println(t5.Date())

        //返回年:2017
        fmt.Println(t5.Year())

        //返回月:October
        fmt.Println(t5.Month())

        //返回日:23
        fmt.Println(t5.Day())

        //返回星期:Monday
        fmt.Println(t5.Weekday())

        //返回ISO 9601标准下的年份和星期编号:2017 43
        fmt.Println(t5.ISOWeek())

        //返回时分秒:19 16 25
        fmt.Println(t5.Clock())

        //返回小时:19
        fmt.Println(t5.Hour())

        //返回分钟:16
        fmt.Println(t5.Minute())

        //返回秒:25
        fmt.Println(t5.Second())

        //返回纳秒:381921400
        fmt.Println(t5.Nanosecond())

        //返回一年中对应的天:296
        fmt.Println(t5.YearDay())

        //返回时区的规范名,时区相对于UTC的时间偏移量(秒):CST 28800
        fmt.Println(t5.Zone())

        //返回时间戳:1508757385
        fmt.Println(t5.Unix())

        //返回纳秒时间戳:1508757385381921400
        fmt.Println(t5.UnixNano())

        //时间的比较与计算
        t6 := time.Now()

        //是否零时时间:false
        fmt.Println(t6.IsZero())

        //t6时间在t5时间之后,返回真:true
        fmt.Println(t6.After(t5))

        //t5时间在t6时间之前,返回真:true
        fmt.Println(t5.Before(t6))

        //时间是否相同:true
        fmt.Println(t6.Equal(t6))

        //返回t6加上纳秒的时间:2017-10-23 19:16:25.383933 +0800 CST
        fmt.Println(t6.Add(10000))

        //返回两个时间之差的纳秒数:2.0016ms
        fmt.Println(t6.Sub(t5))

        //返回t6加1年,1月,1天的时间:2018-11-24 19:16:25.383923 +0800 CST
        fmt.Println(t6.AddDate(1, 1, 1))

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

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

        //反序列化二进制:2017-10-23 19: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...")
                }
        }
}

results matching ""

    No results matching ""