• go语言time包的学习(Time,Location,Duration,Timer,Ticker)


    package main;

     
    import (
        "time"
        "fmt"
    )
     
    func main() {
        //time.Time代表一个纳秒精度的时间点
        var t time.Time;
        //返回当前时间
        t = time.Now();
        fmt.Printf("%v ", t);
        //反回所在时区
        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());
     
        //根据时间戳返回本地时间
        //参数分别表示秒数和纳秒数
        t2 := time.Unix(1487780010, 0);
        fmt.Println(t2);
     
        //根据指定时间返回time.Time
        //分别指定年,月,日,时,分,秒,纳秒,时区
        t3 := time.Date(2017, time.Month(5), 26, 15, 30, 20, 0, t.Location());
        fmt.Println(t3);
     
        //格式化输出时间
        t4 := time.Now();
        fmt.Println(t4.Format("2006-01-02 15:04:05"));
     
        //获取时间信息
        t5 := time.Now();
        //返回日期
        fmt.Println(t5.Date());
        //返回年
        fmt.Println(t5.Year());
        //返回月
        fmt.Println(t5.Month());
        //返回日
        fmt.Println(t5.Day());
        //返回星期
        fmt.Println(t5.Weekday());
        //返回ISO 9601标准下的年份和星期编号
        fmt.Println(t5.ISOWeek());
        //返回时分秒
        fmt.Println(t5.Clock());
        //返回小时
        fmt.Println(t5.Hour());
        //返回分钟
        fmt.Println(t5.Minute());
        //返回秒
        fmt.Println(t5.Second());
        //返回纳秒
        fmt.Println(t5.Nanosecond());
        //返回一年中对应的天
        fmt.Println(t5.YearDay());
        //返回时区
        fmt.Println(t5.Location());
        //返回时区的规范名,时区相对于UTC的时间偏移量(秒)
        fmt.Println(t5.Zone());
        //返回时间戳
        fmt.Println(t5.Unix());
        //返回纳秒时间戳
        fmt.Println(t5.UnixNano());
     
        //时间的比较与计算
        t6 := time.Now();
        //是否零时时间
        fmt.Println(t6.IsZero());
        //t6时间在t5时间之后,返回真
        fmt.Println(t6.After(t5));
        //t5时间在t6时间之前,返回真
        fmt.Println(t5.Before(t6));
        //时间是否相同
        fmt.Println(t6.Equal(t6));
        //返回t6加上纳秒的时间
        fmt.Println(t6.Add(10000));
        //返回两个时间之差的纳秒数
        fmt.Println(t6.Sub(t5));
        //返回t6加1年,1月,1天的时间
        fmt.Println(t6.AddDate(1, 1, 1));
     
        //时间的序列化
        t7 := time.Now();
        //序列化二进制
        bin, _ := t7.MarshalBinary();
        //反序列化二进制
        t7.UnmarshalBinary(bin)
        fmt.Println(t7);
        //序列化json
        json, _ := t7.MarshalJSON();
        fmt.Println(string(json));
        //反序列化json
        t7.UnmarshalJSON(json);
        fmt.Println(t7);
        //序列化文本
        txt, _ := t7.MarshalText();
        fmt.Println(string(txt));
        //反序列化文本
        t7.UnmarshalText(txt);
        fmt.Println(t7);
        //gob编码
        gob, _ := t7.GobEncode();
        t7.GobDecode(gob);
        fmt.Println(t7);
     
        //时间段time.Duration
        dur := time.Duration(6666666600000);
        //返回字符串表示
        fmt.Println(dur.String());
        //返回小时表示
        fmt.Println(dur.Hours());
        //返回分钟表示
        fmt.Println(dur.Minutes());
        //返回秒表示
        fmt.Println(dur.Seconds());
        //返回纳秒表示
        fmt.Println(dur.Nanoseconds());
     
        //时区time.Location
        //返回时区名
        fmt.Println(time.Local.String());
     
        //通过地点名和时间偏移量返回时区
        fmt.Println(time.FixedZone("Shanghai", 800));
     
        //通过给定时区名称,返回时区
        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 {
                //大于5次关闭打点器
                ticker.Stop();
                break;
            }
            //否则从打点器中获取chan
            select {
            case <-ticker.C:
                num++;
                fmt.Println("1 second...");
            }
        }
    }
  • 相关阅读:
    Raw图像格式
    Basler相机外部触发设置(Halcon)
    C# 丢弃串口缓冲区 Serialport.DiscardInBuffer,DiscardOutBuffer
    ASCII 码
    Xcopy 使用详解
    Qt 信息提示框QMessageBox用法
    Qt 调整图片大小适应QLabel
    C++取整
    Qt QTableView数据列宽度自适应, 横向填满表格
    Qt 事件总结(鼠标、键盘) QMouseEvent、QKeyEvent
  • 原文地址:https://www.cnblogs.com/smallleiit/p/10303520.html
Copyright © 2020-2023  润新知