java - 在java 7中将2个日期之间的差异转换为天数
问题描述
我想比较java中的2个日期,需要将2个日期之间的差异转换为天
//Setting up date
Calendar cal = Calendar.getInstance();
cal.set(2019, 5, 16);
Date d = cal.getTime();
输出将是这样的:Sun Jun 16 11:04:57 UTC 2019
//Getting the current date instance
Calendar cal1 = Calendar.getInstance();
Date d1 = cal1.getTime();
输出将是这样的:Mon Jul 08 11:04:57 UTC 2019
需要以天计算 d 和 d1 之间的差异。
提前感谢您抽出宝贵时间提供解决方案
解决方案
在这里,您只需要做简单的数学运算。
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
start.set(2010, 7, 23);
end.set(2010, 8, 26);
Date startDate = start.getTime();
Date endDate = end.getTime();
long startTime = startDate.getTime();
long endTime = endDate.getTime();
long diffTime = endTime - startTime;
long diffDays = diffTime / (1000 * 60 * 60 * 24);
DateFormat dateFormat = DateFormat.getDateInstance();
System.out.println("The difference between "+
dateFormat.format(startDate)+" and "+
dateFormat.format(endDate)+" is "+
diffDays+" days.");
这在跨越夏令时(或闰秒)时不起作用,并且在使用一天中的不同时间时也可能不会给出预期的结果。您可以像这样修改它:
start.add(Calendar.DAY_OF_MONTH, (int)diffDays);
while (start.before(end)) {
start.add(Calendar.DAY_OF_MONTH, 1);
diffDays++;
}
while (start.after(end)) {
start.add(Calendar.DAY_OF_MONTH, -1);
diffDays--;
}
希望这可以帮助。祝你好运。
推荐阅读
- mysql - 如何查找具有多个不同组件的最新数据库记录
- reactjs - 如何按值过滤对象数组 React Redux lodash
- r - 使用 R CMD BATCH 时如何将字符串作为命令行参数传递
- python-3.x - 识别唯一的二维阵列
- php - PHP 参考 - 这段代码有什么作用?
- c - 在 C 中 calloc 分配了多少个成员
- liferay - Liferay 在最大化 portlet 时创建的后退箭头中生成一个空白 URL
- python - 机器人框架 - java.lang.UnsupportedClassVersionError: oracle/jdbc/driver/OracleDriver : Unsupported major.minor version 52.0
- python - 如何将图像批次作为本地人传递给 profile.runctx?
- python - 如何在 Python 中定义具有 2 个参数的递归函数