java数据库如何计算两个日期的剩余天数
我有一个显示不同日期的脚本,但如果“tglkembali”低于“tempo”,我需要的脚本是0天,但我键入的脚本是双向计算的
try{
String tglsatu = tempo.getText();
DateFormat date = new SimpleDateFormat("yyyy-MM-dd");
Date tglAwal = (Date) date.parse(tglsatu);
String tgldua = tglKembali.getText();
Date tglAkhir = (Date) date.parse(tgldua);
long bedaHari = tglAkhir.getTime() - tglAwal.getTime();
terlambat.setText(TimeUnit.MILLISECONDS.toDays(bedaHari) + " hari");
}catch(Exception e){
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
# 1 楼答案
爪哇。时间
当日期按预期顺序排列时,如上面的代码片段所示,输出应该与您的一致:
但是,如果我更改这一行以交换日期:
现在,我的代码的输出就是您所要求的:
角落案例:当我说输出与前一种情况相同时,这通常是正确的。您使用了
Date.getTime
和TimeUnit.MILLISECONDS.toDays
,所以您执行了从毫秒到天的转换,假设一天总是24小时长。情况并非总是如此。例如,在一些国家的春季夏季(DST)开始时,一天通常只有23小时,这将导致代码计算的一天太少。我使用的LocalDate
类既没有一天中的时间,也没有时区,因此避免了这个问题我使用java的另一个原因。time是现代Java日期和时间API,它通常比旧的日期和时间类(包括
DateFormat
、SimpleDateFormat
和Date
)好得多。这些都有一些设计上的问题,我们没有理由还要与之抗争另一种选择是使用
isBefore
或isAfter
比较日期,如果它们不符合预期顺序,则显示消息。例如(在谷歌翻译的帮助下):链接: