将Timestamp与另一个Timestamp对象进行比较

时间:2013-11-04 14:15:30

标签: java timestamp

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

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

5 个答案:

答案 0 :(得分:1)

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

你想做的是

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 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这样做

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)){

}

答案 4 :(得分:-1)

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

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

这意味着time_B与time_A

的时间相差45天(或更长)

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