golang time AddDate的一个小细节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang time AddDate的一个小细节相关的知识,希望对你有一定的参考价值。

参考技术A 如果有用到AddDate的,有三条建议:
不要用AddDate对月进行加减操作
不要用AddDate对月进行加减操作
不要用AddDate对月进行加减操作

有一个需求需要对传入的时间减去一个月,拿到上一个月的年月(如:2006-01),再进行操作。
那么就: str := date.AddDate(0,-1,0).Format("2006-01") 很完美的样子。

2018-05-30 加一个月变成了2018-07-01。

看一下官方文档:
AddDate会将结果规范化,类似Date函数的做法。因此,举个例子,给时间点October 31添加一个月,会生成时间点December 1。(从时间点November 31规范化而来)

所以当你给month加 1,day 是不会变的。5-31变成 6-31,最后转化为 7-1。
所以大家在用任何官方、非官方的接口,都一定要仔细阅读接口文档呀,不然很容易出问题。

一定要慎用AddDate,尤其是对年和月直接进行加减操作的。

以上是关于golang time AddDate的一个小细节的主要内容,如果未能解决你的问题,请参考以下文章

Golang 细节

golang之递归

golang动画等待计算菲波那契结果

golang 函数笔记

Golang实现一个密码生成器

基于docker容器环境下的php/swoole/golang 性能小测试