关于java:将Timestamp与另一个Timestamp对象进行比较

Compare Timestamp with another Timestamp object

我是Java的新手。 我正在使用两个Timestamp对象dateFromdateTo。 我想检查dateFrom是否比dateTo早45天。 我使用这段代码片段进行比较
if(dateFrom.compareTo(dateTo) < 45) { // do the action; }

我对代码中给出的45感到困惑。 我可以期待正确的结果吗? 它会符合我的结果吗?


你必须从逻辑上考虑一下。首先,您需要到达dateTo日期前45天的时间戳。时间有各种单位(秒,分钟,小时,天),所以在这种情况下只检查< 45是没有意义的。 compareTo()方法只是用于命令知道时间戳是在另一个之前还是之后。

您可以先为时间戳创建Calendar,然后在45天内添加()dateFrom。然后,您可以使用before()方法检查dateFrom是否在dateTo之前。


compareTo()返回-1,0或1的值,具体取决于结果。

你想做的是

1
2
3
4
5
6
long result = dateTo.getTime() - (1000 * 60 * 60 * 24 * 45) - dateFrom.getTime();
if(result >= 0) {
 System.out.println("dateFrom is 45 days or more before dateTo");
else {
 System.out.println("dateFrom is less than 45 days before dateTo");
}

但这很难看。您是否有使用Calendar的具体原因?


这样做

1
2
3
4
5
6
7
8
9
Date dateFrom ="your from date";                
Calendar cal = GregorianCalendar.getInstance();
cal .setTime(dateFrom);            
cal.add(Calendar.DAY_OF_MONTH, 45);
Date expireDate = cal.getTime();
Date dateTo = new Date();
if(dateTo.after(expireDate)){

}

使用Joda Time或Calendar类(添加45天到dateFrom,将结果与dateTo进行比较)。


由于Java中的时间戳是从UNIX纪元开始的毫秒数 - 将45天更改为毫秒数(45d = 45 * 24h = 45 * 24 * 3600s = 45 * 24 * 3600 * 1000ms),因此:

1
(time_B + 45*24*3600*1000) >= time_A

这意味着time_B与time_A的时间相差45天(或更长)

当然你也可以使用JodaTime和其他库。