这是我的代码,但这不起作用。
Start.getDate();
End.getDate();
int diffInDays = (int)( (Start.getDate() - End.getDate()) / (1000 * 60 * 60 * 24));
System.out.println(diffInDays);
那么如何制作一个用户可以查看2个JDateChooser之间差异的程序。
答案 0 :(得分:4)
日期/时间计算是一个复杂的主题,通常最好使用专用库来解决。
Instant start = Start.getDate().toInstance();
Instant end = End.getDate().getInstance();
Duration duration = Duration.between(start, end);
如果您不能使用Java 8,那么您应该使用Joda-Time代替
DateTime start = new DateTime(Start.geDate().getTime());
DateTime end = new DateTime(End.geDate().getTime());
// You might need to use end, start instead, depending on which
// is later
Duration duration = new Duration(start, end);
Period period = duration.toPeriod();
您可以查看此answer,了解如何格式化值
答案 1 :(得分:2)
尝试以毫秒为单位获取时间并进行比较:
Date startDate = Start.getDate();
Date endDate = End.getDate();
// In milliseconds
long difference = endDate.getTime() - startDate.getTime();
int diffInDays = (int)(difference / 1000 / 60 / 60 / 24);
在您减去Date
个对象之前,这些对象不是数字。你想比较他们的时间,这是数字。
要检查JDateChooser
是否为空,只需执行:
if (Start == null) {
// code
}
或
if (Start != null) {
// code
}
声明:
你不应该相互减去两毫秒,只有许多规则没有考虑到(闰年,闰秒,世纪边界,夏令时),以使其更加准确。您应该使用Java 8的Time API或JodaTi e(哦,天不是24小时)。 - MadProgrammer
这是一个快速而肮脏的解决方案,但是存在许多弱边缘情况。小心。