一、代码

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...");
}
}
}
#补充代码
now := time.Now()
// 10分钟前
m, _ := time.ParseDuration("-1m")
m1 := now.Add(m)
fmt.Println(m1) // 8个小时前
h, _ := time.ParseDuration("-1h")
h1 := now.Add(8 * h)
fmt.Println(h1) // 一天前
d, _ := time.ParseDuration("-24h")
d1 := now.Add(d)
fmt.Println(d1) // 10分钟后
mm, _ := time.ParseDuration("1m")
mm1 := now.Add(mm)
fmt.Println(mm1) // 8小时后
hh, _ := time.ParseDuration("1h")
hh1 := now.Add(hh)
fmt.Println(hh1) // 一天后
dd, _ := time.ParseDuration("24h")
dd1 := now.Add(dd)
fmt.Println(dd1)

golang中time包的使用的更多相关文章

  1. golang 中 sync包的 WaitGroup

    golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 ...

  2. Go_21: Golang 中 time 包的使用二

    常量声明: const TimeLayout = "2006-01-02 15:04:05" 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4- ...

  3. Go_20: Golang 中 time 包的使用

    time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1. 时间常量(时间格式化) const ( ANSIC = "Mon Jan _2 15:04:05 2006" ...

  4. golang中context包学习

    摘要 go语言中goroutine之间的关联关系,缺乏维护,在erlang中有专门的机制来保障新开仟程的生命周期, 在go语言中,只能通过channel + select来实现,但不够直观,感觉很绕. ...

  5. [Go] golang中的包管理

    在配置了环境变量$GOPATH后,比如下面这个路径 export GOPATH=/mnt/f/ubuntu/goProject 在这个路径下面会有这几个目录 在src目录下放着我的源码比如: 在同一个 ...

  6. golang中json包序列化与反序列化

    package main import ( "encoding/json" "fmt" "reflect" ) type Info stru ...

  7. golang 中strconv包用法

    链接:https://studygolang.com/articles/5003 http://www.cnblogs.com/golove/p/3262925.html

  8. golang中time包一个简单的时间格式输出

    一.代码 package main import ( "fmt" "time" ) func main() { //"2006-01-02 15:04 ...

  9. 关于golang中某些包无法下载的解决方法

    由于某些不可描述的原因,我们 在go module 环境下(啥?这个不知道是啥?赶紧恶补下)进行go get xxxx时,会发现一些依赖库无法访问(不要问为什么无法访问). 解决办法 戳这里:http ...

随机推荐

  1. Storm框架设计

  2. Nginx网站部署

    Nginx网站服务部署 常用的网站服务软件 处理静态资源的服务: apache软件:https://apache.org/ nginx软件:https://nginx.org/ 处理动态资源的服务: ...

  3. Ansible介绍

    第一章 ansible服务介绍 1.1 ansible批量管理服务概述 是基于python语言开发的自动化软件工具 是基于SSH远程管理服务实现远程主机批量管理 1.2 ansible批量管理服务意义 ...

  4. B 树 B+树

      拜读了 http://blog.csdn.net/v_july_v/article/details/6530142, 自己总结下: B树的出发点是为了解决磁盘IO慢的问题,尽量再一个磁盘块中提供更 ...

  5. Mycat搭建负载均衡,读写分离的Mysql集群

    Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...

  6. systemctl命令的使用及服务状态的查看

    二.systemctl命令 systemctl list-units            ##列出当前系统服务的状态 systemctl list-unit-files       ##列出服务的开 ...

  7. js 浮点数计算问题

    //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. //调用:jsAdd(arg1,arg2) //返回值:arg1加上arg2的精确 ...

  8. HashSet 详解

    基本介绍 1. 不允许重复(底层是HashMap,用key储存元素,value统一都是 PRESENT),可以为null,无顺序 2. HashSet就是为了提高查找效率的(在查找是否存在某个值时,A ...

  9. bzoj1024题解

    [解题思路] 爆搜,状态f(r,x,y)表示剩下r刀,边长为x和y,对于每个状态枚举切成两块后的长度比或宽度比.复杂度o((n/2)n). [参考代码] #include <algorithm& ...

  10. 思维题——牛客多校第六场D

    这题的不能用二分做,因为不满足单调性的 可以用multiset做 #include<bits/stdc++.h> #define ll long long #define rep(i,a, ...