参见英文答案 >
Android/Java – Date Difference in days17个
我需要计算两个日期之间的天数,我使用下面的代码.问题是它回来了2但实际上它应该返回3因为2016年6月30日到6月27日之间的差异是3.你能帮助它应该包括当前日期以及区别吗?
我需要计算两个日期之间的天数,我使用下面的代码.问题是它回来了2但实际上它应该返回3因为2016年6月30日到6月27日之间的差异是3.你能帮助它应该包括当前日期以及区别吗?
public static long getNoOfDaysBtwnDates(String expiryDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date expDate = null; long diff = 0; long noOfDays = 0; try { expDate = formatter.parse(expiryDate); //logger.info("Expiry Date is " + expDate); // logger.info(formatter.format(expDate)); Date createdDate = new Date(); diff = expDate.getTime() - createdDate.getTime(); noOfDays = TimeUnit.DAYS.convert(diff,TimeUnit.MILLISECONDS); long a = TimeUnit.DAYS.toDays(noOfDays); // logger.info("No of Day after difference are - " + TimeUnit.DAYS.convert(diff,TimeUnit.MILLISECONDS)); System.out.println(a); System.out.println(noOfDays); } catch (ParseException e) { e.printStackTrace(); } return noOfDays; }
到期日为2016-06-30,当前日期为2016-06-27
解决方法
原因是,您没有使用相同的时间格式减去两个日期.
使用Calendar类将日期的时间更改为00:00:00,您将获得几天的确切差异.
Date createdDate = new Date(); Calendar time = Calendar.getInstance(); time.set(Calendar.HOUR_OF_DAY,0); time.set(Calendar.MINUTE,0); time.set(Calendar.SECOND,0); time.set(Calendar.MILLISECOND,0); createdDate = time.getTime();
Jim Garrison’answer中的更多解释
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。