package main;

 
import (
    "time"
    "fmt"
)
 
func main() {
    //time.Time代表一个纳秒精度的时间点
    var t time.Time;
    //返回当前时间
    t = time.Now();
    fmt.Printf("%v\n", t);
    //反回所在时区
    fmt.Printf("%v\n", t.Location());
    //返回UTC时间和UTC时区
    fmt.Printf("%v %v\n", t.UTC(), t.UTC().Location());
    //同上,In()返回指定时区的时间
    fmt.Printf("%v %v\n", t.In(time.UTC), t.In(time.UTC).Location());
    //返回当地时区的时间
    fmt.Printf("%v %v\n", 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...");
        }
    }
}

go语言time包的学习(Time,Location,Duration,Timer,Ticker)的更多相关文章

  1. go语言log包的学习(log,Logger)

    package main; import ( "log" "os" "time" "fmt" ) func main() ...

  2. go语言sync包的学习(Mutex、WaitGroup、Cond)

    package main; import ( "fmt" "sync" "runtime" "time" ) //加锁, ...

  3. go语言path包和filepath包的学习与使用

    path包的使用 package main; import ( "fmt" "path" ) //go语言path包的学习 func main() { //返回 ...

  4. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  5. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  6. R语言-Knitr包的详细使用说明

    R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

  7. R语言扩展包dplyr——数据清洗和整理

    R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

  8. go mod 解决 Go 语言的包依赖问题

    转:https://testerhome.com/topics/16980 https://testerhome.com/ -------------------------------------- ...

  9. Java语言Lang包下常用的工具类介绍_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都 ...

随机推荐

  1. lucene的CRUD操作Document(四)

    IndexWriter writer = new IndexWriter(Directory, IndexWriterConfig); 增加文档:writer.addDocument(); 读取文档: ...

  2. css换行

    1. word-break:break-all;只对英文起作用,以字母作为换行依据 2. word-wrap:break-word; 只对英文起作用,以单词作为换行依据 3. white-space: ...

  3. day07-(JDBC)

    回顾: sql sql分类: DDL: 对象:数据库和表 关键词:create alter drop truncate 创建数据库:create database day06; 删除数据库: drop ...

  4. python自动化开发-[第十二天]-前端Css

    CSS基本语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector { property: value; property: value; ... property: v ...

  5. JavaSE_坚持读源码_HashMap对象_get_Java1.7

    当你从HashMap里面get时,你其实在干什么? /** * Returns the value to which the specified key is mapped, * or {@code ...

  6. maven_环境变量配置

  7. java io系列04之 管道(PipedOutputStream和PipedInputStream)的简介,源码分析和示例

    本章,我们对java 管道进行学习. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_04.html java 管道介绍 在java中,PipedOu ...

  8. Dubbo优雅关机原理

    Dubbo是通过JDK的ShutdownHook来完成优雅停机的 所以如果用户使用 kill -9 PID 等强制关闭命令,是不会执行优雅停机的 只有通过 kill PID时,才会执行 原理: · 服 ...

  9. Hbase记录-HBase性能优化指南

    垃圾回收优化当region服务器处理大量的写入负载时,繁重的任务会迫使JRE默认的内存分配策略无法保证程序的稳定性 所以我们可能需要对region服务器的垃圾回收机制进行一些参数调整(因为master ...

  10. SqlServer中的事务使用

    一.事务的概念和特点 事务(transaction)是恢复和并发控制的基本单位. 事务的特点 原子性:事务是一个工作单元,要都成功,要么的失败 例子:A付款给B,A余额-100,B余额+100,只能都 ...