我正在尝试一个例子:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String date = "03/09/2010"; //30 days from today
Date usefullDate = df.parse(date);

Calendar todaysDatePlus30Days = Calendar.getInstance();
todaysDatePlus30Days.add(Calendar.DAY_OF_YEAR, 30);

System.out.println ("Compared Value: " +
usefullDate.compareTo(todaysDatePlus30Days.getTime()))

打印值为 -1 。为什么不打印 0

我认为问题在于 todaysDatePlus30Days.getTime() 也带来了实际时间。而 usefullDate 的时间是 00:00:00

所以下一个问题是我怎样才能得到 date

最佳答案

您解析的日期隐式是该日期的午夜。您构建的将是一天中的当前时间。

尝试:

Calendar todayPlus30 = new GregorianCalendar() {{
  add(Calendar.DAY_OF_YEAR, 30);
  set(Calendar.HOUR_OF_DAY, 0);
  set(Calendar.MINUTE, 0);
  set(Calendar.SECOND, 0);
  set(Calendar.MILLISECOND, 0);
}};

我可能有几个这样的常量是错误的,如果你愿意,你可以用 Calendar.newInstance() 来做到这一点,尽管语法有点不同。

关于java - 将今天的日期 + 30 天与另一个日期进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2217750/

10-14 10:55