先看看有哪些类型

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相关推荐

  1. golang 关于golang.org/x包问题

    关于golang.org/x包问题 由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载,解决方法: git clone https://github.com/golang/net.git $GO ...

  2. golang 导入自定义包_goLang引入自定义包的方法

    看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧. 一. 设置$GOPATH环境变量 golang和C或php不一样,不会自动查找当前路径下的文 ...

  3. golang中的包管理工具——govendor和godep简单学习

    为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

  4. 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 ...

  5. go get golang.org/x 包失败解决方法

    go get golang.org/x 包失败解决方法 参考文章: (1)go get golang.org/x 包失败解决方法 (2)https://www.cnblogs.com/hupeng12 ...

  6. 关于golang的time包总结

    目录 前言 time包详解 总结 前言 各种编程语言都少不了与时间有关的操作,因为很多判断都是基于时间,因此正确和方便的使用时间库就很重要额. golang提供了import "time&q ...

  7. 6行代码解决golang TCP粘包

    什么是TCP粘包问题以及为什么会产生TCP粘包,本文不加讨论.本文使用golang的bufio.Scanner来实现自定义协议解包. 协议数据包定义 本文模拟一个日志服务器,该服务器接收客户端传到的数 ...

  8. golang第三方日志包seelog配置文件详解

    开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提.在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一.seelog主要功能 下面 ...

  9. 下载 golang.org/x 包出错不用代理的解决办法

    原文链接:https://www.jianshu.com/p/6fe61053c8aa?utm_campaign=maleskine&utm_content=note&utm_medi ...

  10. 一键解决 go get golang.org/x 包失败

    From:https://segmentfault.com/a/1190000018264719 问题描述 在 ubuntu 上用 sudo apt install golang-go 安装 go 的 ...

最新文章

  1. 百万人才工程创新大讲堂开课啦!
  2. Android Handler 流程解析
  3. 重学前端学习笔记(二十二)--选择器的机制
  4. 【01】 课程介绍 - 计算机视觉概述
  5. 如何从头到脚彻底解决一个MySQL Bug
  6. 【转】Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
  7. composer 完整路径才能访问_Docker 漏洞:允许攻击者获得主机 root 访问权限
  8. 【WPF】鼠标穿透窗口(类似于桌面歌词那样子)
  9. LT8619B 产品功能概述 HDMI1080P转BT1120
  10. 【安装SSH服务】ubuntu安装ssh以及开启root用户ssh登录
  11. python属于哪种类型_下列哪种类型是Python的列表类型?
  12. Keil MDK5 STM32F401CCU6开发环境配置
  13. 【图像压缩】替换输入改善压缩+实现可变比特率
  14. Cloudera 简介、安装和升级、管理、操作文档
  15. C#毕业设计——基于C#+asp.net+sqlserver的计算机等级考试系统设计与实现(毕业论文+程序源码)——计算机等级考试系统
  16. 2023年直播行业的困境是什么?未来有哪些发展趋势?
  17. ubuntu20.04离线安装python2.7.17
  18. 吴裕雄 18-MySQL GROUP BY 语句
  19. 龙门标局:白炽灯商标转让所在的类别属于第几类?
  20. 拉线位移编码器零线有电的原因

热门文章

  1. 通向财务自由之路03_判断之偏好:掌握市场为何对多数人来说如此之难
  2. function在mysql里总是出错_如何在MySQL函数中引发错误
  3. 报表开发者必看:别加班了,快用这个工具让领导看到你的工作成果
  4. 快、准、狠!秒杀Excel的报表工具,十分钟教你做好数据填报
  5. AS3还可以通过CDATA标签声明多行字符串
  6. 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?
  7. python怎么用turtle画圆_在Python中用turtle函数画同心圆
  8. The Normal Distributions Transform: A New Approach to Laser Scan Matching
  9. 数组模拟乘法(大数乘法)
  10. GNN在谱域下的演化:Spectral CNN,ChebyNet,GCN