Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDateChooser比较日期_Java_Date_Date Comparison - Fatal编程技术网

Java 使用JDateChooser比较日期

Java 使用JDateChooser比较日期,java,date,date-comparison,Java,Date,Date Comparison,我有两盒JDateChooser,我想做以下比较: 用户将通知第一个日期 当它完成输入第二个日期时,我进行了一次比较,包括: 如果第二个日期大于或等于11天,将显示以下消息: 我编写了一个比较代码,但即使用户在条件下输入日期,他也会显示消息 以下代码: SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); dt1 = sdf.format(dcdataDeslig.getDate().getTime()); SimpleDateFo

我有两盒JDateChooser,我想做以下比较:

用户将通知第一个日期 当它完成输入第二个日期时,我进行了一次比较,包括: 如果第二个日期大于或等于11天,将显示以下消息: 我编写了一个比较代码,但即使用户在条件下输入日期,他也会显示消息

以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
dt1 = sdf.format(dcdataDeslig.getDate().getTime());
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
dt2 = sdf1.format(dchomolog.getDate().getTime());

if (dt2.compareTo(dt1) >= 11 ) {
    JOptionPane.showMessageDialog (null," Homologation Date Must Be Less or Equal to 11 Days Regarding       Date of Shutdown ");
    dchomolog.setDate(null);
    txtdataDisp.setText("");
    txtdataPg.setText("");
}
txtdataDisp.setText(dt2);
txtdataPg.setText(dt2);
调用sdf.format时,结果是一个字符串。这不是日期,而是代表日期的文本

比较字符串不会给你两个日期之间的差异-字符串比较会告诉你它们是否按字母顺序排列,因为字符串代表一个字符序列-一个文本-仅此而已

据我所知,dchomolor.getDate返回一个java.util.Date,因此getTime方法将返回数字时间戳值,这是

要计算日期之间的差异,可以减去getTime的值,以毫秒为单位计算差异。然后使用java.util.concurrent.TimeUnit将其转换为天:

// get the difference in milliseconds
long diffMillis = dchomolog.getDate().getTime() - dcdataDeslig.getDate().getTime();

// transform to days
long diffDays = TimeUnit.DAYS.convert(diffMillis, TimeUnit.MILLISECONDS);
如果getDate方法返回java.util.Calendar,只需将代码更改为dchomor.getDate.getTimeInMillis

Java 8或更高版本 如果您有可用的java.time类,它会更容易,也更可靠,因为该API修复了日期和日历的许多缺陷

首先,您可以将日期转换为即时日期,然后使用ChronoUnit以天为单位计算差值:

long diffDays = ChronoUnit.DAYS.between(dcdataDeslig.getDate().toInstant(), dchomolog.getDate().toInstant() ));

compareTo return-1,0或1不是daysHow中的差异我可以在天中进行比较。阅读java.util.calendar好的,我将了解您是如何做到这一点的,Tks。
long diffDays = ChronoUnit.DAYS.between(dcdataDeslig.getDate().toInstant(), dchomolog.getDate().toInstant() ));