monthdiff oracle_计算月份差 GetMonthDiff

说明

在 CSharp 中,通过将两个 DateTime 相减获得 TimeSpan,并由此获得相隔的天数、时、分、秒都十分方便,但唯独缺少获得相隔月份的方法。直接对 TimeSpan 进行计算,利用相隔天数计算月份差(每月份的天数均不同,且有闰年存在)会存在一些误差。本扩展可解决这个问题。

已知两个时间(DateTime)dt1 和 dt2,计算两者之间的月份差。

所得结果向上取整,即:

0. 如果 dt1 与 dt2 之间相差小于一个月的,算作一个月;

0. 如果 dt1 与 dt2 之间相差大于一个月且小于两个月的,算作两个月。

扩展方法代码

///

/// Compute dateTime difference

/// Alex-LEWIS, 2015-08-11

///

///

///

///

public static int GetMonthDiff(this DateTime dt1, DateTime dt2)

{

var l = dt1 < dt2 ? dt1 : dt2;

var r = dt1 >= dt2 ? dt1 : dt2;

return (l.Day == r.Day ? 0 : l.Day > r.Day ? 0 : 1)

+ (l.Month == r.Month ? 0 : r.Month - l.Month)

+ (l.Year == r.Year ? 0 : (r.Year - l.Year) * 12);

}

使用示范

DateTime dt1 = new DateTime(2015, 08, 11);

DateTime dt2 = new DateTime(1992, 10, 10);

var monthDiff = dt1.GetMonthDiff(dt2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值