我想在输入参数的两个日期之间得到区别 如果通过任何输入日期,那么它应该转换为 yyyy-mm-dd hh:mm:ss
Date1:2016-05-30 20:16:00
Date2:2016-05-29 20:17:00
public long totalHour(Date startDate, Date endDate) {
int diffInDays = (int) ((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));
return diffInDays;
}
我正在使用此代码,但无法以整数形式获取输出,请帮助我。
答案 0 :(得分:1)
计算Java中两个日期之间差异的经典方法是:
Date
个对象Date.getTime()
您的代码似乎正在这样做,但存在一些问题:
int
,如果这两个日期相距足够远,可能会给你错误。 这会更好:
public long hoursDifference(Date start, Date end) {
return ((end.getTime() - start.getTime()) / (1000 * 60 * 60));
}
此外,您可能需要考虑舍入而不是截断。
以任意格式解析日期是不可能的......除非您知道先验预期的格式是什么。在这种情况下,您只需一次尝试一种格式,直到您的解析成功为止。例如,像这样。
SimpleDateFormat[] sdf = new SimpleDateFormat[] {
new SimpleDateFormat(/* format 1 */),
new SimpleDateFormat(/* format 2 */),
...
};
...
Date date = null;
for (int i = 0; i < sdf.length && date == null; i++) {
try {
date = sdf[i].parse(dateString);
} catch (ParseException ex) { /* */ }
}
if (date == null) {
/* report parse error ... */
}
但要注意,您将无法正确处理所有可能的日期格式。例如,您将无法区分7/6/2000(2000年6月7日英语)和2000年7月6日(美国2000年7月6日)。
IMO,你最好给用户一个类型的日期选择器。
...但我希望Dataformat就像这样yyyy-mm-dd hh:mm:ss
日期格式字符串记录在SimpleDateFormat
的{{3}}中。阅读文档,您将能够解决它。您将能够找到解析其他格式的方法!