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天?
答案 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,000
和2011-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;
}