golang 的time包之time
先看看有哪些类型
Time
时间类型,包含了秒和纳秒以及Location
Month
type Month int 月份.定义了十二个月的常量
Weekday
type Weekday int 周,定义了一周的七天
Duration
type Duration int64 持续时间.定义了以下持续时间类型.多用于时间的加减 需要传入Duration做为参数的时候.可以直接传入time.Second
const (Nanosecond Duration = 1Microsecond = 1000 * NanosecondMillisecond = 1000 * MicrosecondSecond = 1000 * MillisecondMinute = 60 * SecondHour = 60 * Minute )
Location
在time包里有两个时区变量:
- time.UTC utc时间
- time.Local 本地时间
FixedZone(name string, offset int) *Location
设置时区名,以及与UTC0的时间偏差.返回Location
时间格式化
- Format(layout string) string
-
传入目标模板(Mon Jan 02 15:04:05 -0700 2006).时间以这个为准
p(t.Format("3:04PM"))p(t.Format("Mon Jan _2 15:04:05 2006"))p(t.Format("2006-01-02T15:04:05.999999-07:00"))p(t.Format("2006-01-02T15:04:05Z07:00"))fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",t.Year(), t.Month(), t.Day(),t.Hour(), t.Minute(), t.Second())
- Parse(layout, value string) (Time, error)
-
将字符窜转换为Time类型.
p := fmt.PrintlnwithNanos := "2006-01-02 15:04:05"t, _ := time.Parse(withNanos, "2013-10-05 18:30:50")p(t.Year())
- ParseDuration(s string) (Duration, error)
-
将字duration符窜("ns", "us" (or "碌s"), "ms", "s", "m", "h".)转换为Duration类型.就是纳秒
p := fmt.Printlnt, _ := time.ParseDuration("1h")p(t.Seconds())
Time相关
time常用函数
- Now() Time
- 获取当前时间,返回Time类型
- Unix(sec int64, nsec int64) Time
- 根据秒数和纳秒,返回Time类型
- Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
- 设置年月日返回,Time类型
- Since(t Time) Duration
- 返回与当前时间的时间差
time常用方法
- After(u Time) bool
- 时间类型比较,是否在Time之后
- Before(u Time) bool
- 时间类型比较,是否在Time之前
- Equal(u Time) bool
- 比较两个时间是否相等
- IsZero() bool
- 判断时间是否为零值,如果sec和nsec两个属性都是0的话,则该时间类型为0
- Date() (year int, month Month, day int)
- 返回年月日,三个参数
- Year() int
- 返回年份
- Month() Month
- 返回月份.是Month类型
- Day() int
- 返回多少号
- Weekday() Weekday
- 返回星期几,是Weekday类型
- ISOWeek() (year, week int)
- 返回年份,和该填是在这年的第几周.
- Clock() (hour, min, sec int)
- 返回小时,分钟,秒
- Hour() int
- 返回小时
- Minute() int
- 返回分钟
- Second() int
- 返回秒数
- Nanosecond() int
- 返回纳秒
- Add(d Duration) Time
- 为一个时间,添加的时间类型为Duration.更精确到纳秒.比起AddDate
- Sub(u Time) Duration
- 计算两个时间的差.返回类型Duration
- AddDate(years int, months int, days int) Time
- 添加时间.以年月日为参数
- UTC() Time
- 设置location为UTC,然后返回时间.就是utc为0.比中国晚了八个小时.
- Local() Time
- 设置location为本地时间.就是电脑时间.
- In(loc *Location) Time
- 设置location为指定location
- Location() *Location
- 获取时间的Location,如果是nic,返回UTC,如果为空,则代表本地
- Zone() (name string, offset int)
- 返回时区,以及与utc的时间偏差
- Unix() int64
- 返回时间戳,自从1970年1月1号到现在
- UnixNano() int64
-
返回时间戳.包含纳秒
func main() {now := time.Now()secs := now.Unix()nanos := now.UnixNano()fmt.Println(now)millis := nanos / 1000000fmt.Println(secs)fmt.Println(millis)fmt.Println(nanos)fmt.Println(time.Unix(secs, 0))fmt.Println(time.Unix(0, nanos))}
- GobEncode() ([]byte, error)
- 编码为gob
- GobDecode(buf []byte) error
- 从gob解码
- MarshalJSON() ([]byte, error)
- 编列为json
- UnmarshalJSON(data []byte) (err error)
- 解码为json
func main() {p := fmt.Printlnnow := time.Now()p(now)d := time.Duration(7200 * 1000 * 1000 * 1000)p(d)then := time.Date(2013, 1, 7, 20, 34, 58, 651387237, time.UTC)p(then)p(then.Year())p(then.Month())p(then.Day())p(then.Hour())p(then.Minute())p(then.Second())p(then.Nanosecond())p(then.Location())p(then.Weekday())p(then.Before(now))p(then.After(now))p(then.Equal(now))p(then.Date())p(then.ISOWeek())p("----------")p(now.UTC())p(now.Local())p(now.Location())p(now.Zone())p(now.Unix())p(time.Unix(now.Unix(), 0))p(now.UnixNano())p(time.Unix(0, now.UnixNano()))p(now.GobEncode())p(now.MarshalJSON())p(time.Since(now))p("----------")diff := now.Sub(then)p(diff)p(diff.Hours())p(diff.Minutes())p(diff.Seconds())p(diff.Nanoseconds())p(then.Add(diff))p(then.Add(-diff))p(d)p(d.Hours())p(d.Minutes())p(d.Seconds())p(d.Nanoseconds())p(then.Add(d)) }
转载于:https://www.cnblogs.com/zhepama/archive/2013/04/12/3017230.html
golang 的time包之time相关推荐
- golang 关于golang.org/x包问题
关于golang.org/x包问题 由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载,解决方法: git clone https://github.com/golang/net.git $GO ...
- golang 导入自定义包_goLang引入自定义包的方法
看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧. 一. 设置$GOPATH环境变量 golang和C或php不一样,不会自动查找当前路径下的文 ...
- golang中的包管理工具——govendor和godep简单学习
为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...
- linux 使用 go get 报 unrecognized import path “golang.org/x/crypto/XXX“ 的解决方法及手动安装 golang.org/x 包方法
问题描述 在linux上使用 go get -u github.com/astaxie/beego ,安装beego框架环境时报 unrecognized import path "gola ...
- go get golang.org/x 包失败解决方法
go get golang.org/x 包失败解决方法 参考文章: (1)go get golang.org/x 包失败解决方法 (2)https://www.cnblogs.com/hupeng12 ...
- 关于golang的time包总结
目录 前言 time包详解 总结 前言 各种编程语言都少不了与时间有关的操作,因为很多判断都是基于时间,因此正确和方便的使用时间库就很重要额. golang提供了import "time&q ...
- 6行代码解决golang TCP粘包
什么是TCP粘包问题以及为什么会产生TCP粘包,本文不加讨论.本文使用golang的bufio.Scanner来实现自定义协议解包. 协议数据包定义 本文模拟一个日志服务器,该服务器接收客户端传到的数 ...
- golang第三方日志包seelog配置文件详解
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提.在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一.seelog主要功能 下面 ...
- 下载 golang.org/x 包出错不用代理的解决办法
原文链接:https://www.jianshu.com/p/6fe61053c8aa?utm_campaign=maleskine&utm_content=note&utm_medi ...
- 一键解决 go get golang.org/x 包失败
From:https://segmentfault.com/a/1190000018264719 问题描述 在 ubuntu 上用 sudo apt install golang-go 安装 go 的 ...
最新文章
- 百万人才工程创新大讲堂开课啦!
- Android Handler 流程解析
- 重学前端学习笔记(二十二)--选择器的机制
- 【01】 课程介绍 - 计算机视觉概述
- 如何从头到脚彻底解决一个MySQL Bug
- 【转】Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
- composer 完整路径才能访问_Docker 漏洞:允许攻击者获得主机 root 访问权限
- 【WPF】鼠标穿透窗口(类似于桌面歌词那样子)
- LT8619B 产品功能概述 HDMI1080P转BT1120
- 【安装SSH服务】ubuntu安装ssh以及开启root用户ssh登录
- python属于哪种类型_下列哪种类型是Python的列表类型?
- Keil MDK5 STM32F401CCU6开发环境配置
- 【图像压缩】替换输入改善压缩+实现可变比特率
- Cloudera 简介、安装和升级、管理、操作文档
- C#毕业设计——基于C#+asp.net+sqlserver的计算机等级考试系统设计与实现(毕业论文+程序源码)——计算机等级考试系统
- 2023年直播行业的困境是什么?未来有哪些发展趋势?
- ubuntu20.04离线安装python2.7.17
- 吴裕雄 18-MySQL GROUP BY 语句
- 龙门标局:白炽灯商标转让所在的类别属于第几类?
- 拉线位移编码器零线有电的原因
热门文章
- 通向财务自由之路03_判断之偏好:掌握市场为何对多数人来说如此之难
- function在mysql里总是出错_如何在MySQL函数中引发错误
- 报表开发者必看:别加班了,快用这个工具让领导看到你的工作成果
- 快、准、狠!秒杀Excel的报表工具,十分钟教你做好数据填报
- AS3还可以通过CDATA标签声明多行字符串
- 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?
- python怎么用turtle画圆_在Python中用turtle函数画同心圆
- The Normal Distributions Transform: A New Approach to Laser Scan Matching
- 数组模拟乘法(大数乘法)
- GNN在谱域下的演化:Spectral CNN,ChebyNet,GCN