1 Star 4 Fork 3

tym_hmm/go-helper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
TimeAddDate.go 1.10 KB
一键复制 编辑 原始数据 按行查看 历史
package TimeHelper
import "time"
func AddDate(t time.Time, years, months, days int) time.Time {
if months >= 12 || months <= 12 {
years += months / 12
months = months % 12
}
// get datetime parts
ye := t.Year()
mo := t.Month()
da := t.Day()
hr := t.Hour()
mi := t.Minute()
se := t.Second()
ns := t.Nanosecond()
lo := t.Location()
ye += years
mo += time.Month(months)
if mo > 12 {
mo -= 12
ye++
} else if mo < 1 {
mo += 12
ye--
}
if da <= 28 {
// nothing to change
} else if da == 29 {
if mo == 2 {
if !isLeapYear(ye) {
da = 28
}
}
// else, OK
} else if da == 30 {
if mo == 2 {
if isLeapYear(ye) {
da = 29
} else {
da = 28
}
}
// else, OK
} else if da == 31 {
switch mo {
case 2:
if isLeapYear(ye) {
da = 29
} else {
da = 28
}
case 1, 3, 5, 7, 8, 10, 12:
da = 31
case 4, 6, 9, 11:
da = 30
}
}
// date
da += days
// return
return time.Date(ye, mo, da, hr, mi, se, ns, lo)
}
func isLeapYear(year int) bool {
if year%4 == 0 {
if year%100 == 0 {
return year%400 == 0
}
return true
}
return false
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tym_hmm/go-helper.git
git@gitee.com:tym_hmm/go-helper.git
tym_hmm
go-helper
go-helper
v1.1.52

搜索帮助