Java / Postgresql接下来的X天

时间:2011-04-29 08:16:45

标签: java postgresql date

public Date getCurrentDay() {
    Calendar cal = Calendar.getInstance();
    Date date = java.sql.Date.valueOf( 
            cal.get(cal.YEAR) + ":" + 
            cal.get(cal.MONTH) + ":" + 
            cal.get(cal.DATE) );
    return date;
}

我需要进行一个数据库查询,其中CLIENT说他想要接下来3天的信息,这是我获取当天的方法,所以我可以得到今天的信息,但是当我的客户想要接下来的3天时,我怎么能进行查询。我如何获得下一个X天?

3 个答案:

答案 0 :(得分:3)

您可以在3天后致电cal.add(cal.DATE, 3);以获得相同的时间。

您可以执行以下方法:

public Date getDaysFromNow(int days) {
   Calendar cal = Calendar.getInstance();
   cal.add(Calendar.DATE, days);
   Date date = java.sql.Date.valueOf( 
        cal.get(cal.YEAR) + ":" + 
        cal.get(cal.MONTH) + ":" + 
        cal.get(cal.DATE) );
   return date;
}

public Date getCurrentDay() {
  return getDaysFromNow(0);
}

编辑:

请注意,您也可以将时间设置为0,然后调用getTimeInMillis(),即

public Date getDaysFromNow(int days, boolean endOfDay) {
   Calendar cal = Calendar.getInstance();
   cal.set(Calendar.HOUR_OF_DAY, endOfDay ? 23 : 0);
   cal.set(Calendar.MINUTE,  endOfDay ? 59 : 0);
   cal.set(Calendar.SECOND,  endOfDay ? 59 : 0);
   cal.set(Calendar.MILLISECOND,  endOfDay ? 999 : 0);

   cal.add(Calendar.DATE, days);
   Date date = new java.sql.Date( cal.getTimeInMillis() );
   return date;
}

endOfDay参数用于将时间设置为23:59:59,999,因此您可以使用相同的方法获得今天的两个日期:2011-29-04 00:00:00,0002011-29-04 23:59:59,999

答案 1 :(得分:2)

在postgres中,您可以使用now()来获取当前时间。然后,您可以使用字符串表达式获得+ 3天。

您可以在postgres客户端中使用这些表达式。

SELECT now() + '3 days'

答案 2 :(得分:1)

如果您的客户端使用的是Java,您可以使用帮助方法来获取当前时间的日期。:

public Date getDaysAheadCurrentDate(int numberOfDaysAhead) {
    if (numberOfDaysAhead <= 0) {
        throw new IllegalArgumentException("The number of days ahead must be a positive integer.");
    }
    Calendar cal = Calendar.getInstance();
    // add the number of days before creating the java.sql.Date instance.
    cal.add(Calendar.DATE, numberOfDaysAhead);
    Date date = java.sql.Date.valueOf( 
            cal.get(Calendar.YEAR) + ":" + 
            cal.get(Calendar.MONTH) + ":" + 
            cal.get(Calendar.DATE) );
    return date;
}