golang 中的时间处理
golang 中的时间处理
在 golang
中有一个很重要的 格式化时间的字符串 2006-01-02T15:04:05Z07:00
, 这个也是 golang 默认时间模版模版中的 time.RFC3339
|
|
golang 中关于时间的处理, 用到了上面的 每一个 数字和字母。
需要特别注意的是, 时区用的是 7 而非 6 , 因为 6 已经在 年(2006) 中出现了
创建时间对象 time.Time
|
|
这里需要注意的是,
time.Parse()
解析字符串创建时间对象时, FORMAT 中出现的数字和字母必须是 golang 定义的, 不能随意替换。所有时间对象 都是有 时区 属性的, 如果没有指定, 默认使用 UTC 时间即 0 时区
但是 time.Now() 默认返回的是当前运行 时区 , 因此在做时间对比的时候, 切记 要统一时区。
时间操作
获取时间对象的属性值
在获取属性值的时候,可以直接通过 t.XXX()
方法获取, 且 XXX
方法名具有特别强的 语意 。
|
|
now.Month()
返回的是Month
的 自定义类型type Month int
, 其底层类型是int
, 可以通过int(Month)
进行转换。now.YearDay()
返回是 一年中的第几天 。now.Date()
返回 年 月 日
时间对象转字符串
t.String()
t.String()
内置了一个 FORMAT
字符串,并使用了 t.Format()
进行格式化,
|
|
t.Format()
t.Format(FOMART)
方法允许用户自定义传入自定义的 FOMART
格式, 以输出想要的格式
|
|
t.MarshalXXX() ([]byte,error)
`
t.MarshalText()
与 t.MarshalJSON
默认使用的是 RFC3339
格式字符串。 不同的是, MarshalJSON
在外层包裹了一对 双引号
|
|
时间对象比较
golang 中非常友好的提供了 t.Before(), t.After(), t.Equal()
方法进行时间比较。
|
|
时间偏移
t.Sub()
可以求出两个时间的 **时间差time.Duration
** 。t.Add()
与时间差time.Duration
可以创建一个新的time.Time
时间对象。
time.Duration 可以为 正数 和 负数 。
t.AddDate()
可以方便的创建变更年月日, 创建新时间对象
|
|
- 原文链接:https://typonotes.com/posts/2021/08/23/golang-time-operation/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。