我是 Java 新手。我正在使用两个 Timestamp 对象dateFrom
和dateTo
. 我想检查是否早于dateFrom
45 天。我用这个代码片段来比较这个
dateTo
if(dateFrom.compareTo(dateTo) < 45)
{
// do the action;
}
我45
对代码中给出的内容感到困惑。我可以期待正确的结果吗?它会符合我的结果吗?
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");
}
不过,这相当难看。您不使用 a 是否有特定原因Calendar
?
使用 Joda Time 或 Calendar 类(将 45 天添加到 dateFrom,将结果与 dateTo 进行比较)。
这样做
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)){
}
由于 Java 中的时间戳是从 UNIX 纪元开始的毫秒数 - 将 45 天更改为毫秒数 (45d=45*24h=45*24*3600s=45*24*3600*1000ms) 所以如果:
(time_B + 45*24*3600*1000) >= time_A
这意味着 time_B 是 45 天(或更多)“更远”的时间,time_A
当然你也可以使用 JodaTime 和其他库。