这是我的代码,但这不起作用。
Start.getDate();
End.getDate();
int diffInDays = (int)( (Start.getDate() - End.getDate()) / (1000 * 60 * 60 * 24));
System.out.println(diffInDays);
那么如何制作一个用户可以查看 2 个 JDateChooser 之间差异的程序。
这是我的代码,但这不起作用。
Start.getDate();
End.getDate();
int diffInDays = (int)( (Start.getDate() - End.getDate()) / (1000 * 60 * 60 * 24));
System.out.println(diffInDays);
那么如何制作一个用户可以查看 2 个 JDateChooser 之间差异的程序。
日期/时间计算是一个复杂的主题,通常最好使用专用库来解决。
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();
您可以查看此答案以了解如何格式化该值
尝试以毫秒为单位获取时间并进行比较:
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 小时)。-疯狂程序员。
这是一个快速而肮脏的解决方案,但有很多弱边缘情况。请小心。