Java中两个时间点的相隔天数和相差天数解析

咋一看“相隔天数”和“相差天数”,似乎好像大概没有什么区别,但是仔细琢磨一下,这两个名词是有区别的。

相差天数

通常我们在项目开发中需要用到有关时间的计算问题,如:计算两个日期之间相差的天数。

public int getDays(Date start, Date end) {
    return (int) ((end.getTime() - start.getTime()) / 1000 / 60 / 60 / 24);
}

上面的计算可以计算出两个日期的相差的天数,这并没有错。那就让我们看看相隔天数究竟是什么意思?

相隔天数

只要两个日期在同一天,那相隔天数就是0,不在同一天,相隔天数就不是0。比如:

2017-02-16 23:59:59 和 2017-02-17 00:00:00
相差天数为0,但相隔天数为1

实现代码:
方法一:
public int getDays(Date start, Date end) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(start);
//日期start 在本年中的第几天
int day1 = calendar.get(Calendar.DAY_OF_YEAR);

aCalendar.setTime(oDate);
//日期end 在本年中的第几天
int day2 = calendar.get(Calendar.DAY_OF_YEAR);

return day2 - day1;

}
注意:方法一当跨年的时候会有问题,即两个日期不在同一年。

方法二:

public int getDays(Date start, Date end) {

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

   return (df.parse(df.format(end)).getTime() -df.parse(df.format(start)).getTime()) / (24 * 60 * 60 * 1000);

}

所以,是选择“相隔天数”还是“相差天数”,具体要看我们的实际需求是什么了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值