- 两个日期相差多少天
time包有个函数Parse可以将时间字符串解析成Time对象,而Time对象有个Sub方法可以计算与某个时间的差,返回值是Duration对象,而Duration有一个Hours方法,除以24就是天数了
// 计算日期相差多少天
// 返回值day>0, t1晚于t2; day<0, t1早于t2
func SubDays(t1,t2 time.Time)(day int) {
swap := false
if t1.Unix() < t2.Unix(){
t_:= t1
t1 = t2
t2 = t_
swap = true
}
day = int(t1.Sub(t2).Hours()/24)
// 计算在被24整除外的时间是否存在跨自然日
if int(t1.Sub(t2).Milliseconds())%86400000 > int(86400000-t2.Unix()%86400000) {
day += 1
}
if swap {
day = -day
}
return
}
- 计算日期相差多少月
先计算二个日期相差的年,然后计算月,计算月的时候需要补差。计算日的时候也需要这样补差
// 计算日期相差多少月
func SubMonth(t1, t2 time.Time) (month int) {
y1 := t1.Year()
y2 := t2.Year()
m1 := int(t1.Month())
m2 := int(t2.Month())
d1 := t1.Day()
d2 := t2.Day()
yearInterval := y1 - y2
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
if m1 < m2 || m1 == m2 && d1 < d2 {
yearInterval--
}
// 获取月数差值
monthInterval := (m1 + 12) - m2
if d1 < d2 {
monthInterval--
}
monthInterval %= 12
month = yearInterval*12 + monthInterval
return
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。