两个日期相差多少天
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 }
Go 计算两个日期之间相差几日、几月
- 本文链接: https://zengwu.com.cn/p/290a12.html
- 版权声明: 本博客所有文章遵循 CC 4.0 BY-SA 版权协议。转载请注明出处!