我尝试在Java中创建一个采用当前日期或存储日期的方法 - 并在x之前或之后获取x天。
java.util.Date cannot be cast to java.sql.Date
该功能看起来像这样
//today date
Calendar today = Calendar.getInstance();
Date sqlTodayDate = (Date) today.getTime();
虽然我试图将今天的日期推进到这种方法中,但我遇到了错误。
{{1}}
- 今天就像这样
{{1}}
答案 0 :(得分:0)
这里的问题是你试图将java.util.Date
投放到java.sql.Date
这一行。
java.sql.Date sqlTodayDate = (java.sql.Date) today.getTime();
你应该简单地使用,
java.util.Date sqlTodayDate = today.getTime();
所以,最终的工作代码看起来像,
import java.util.Date;
import java.util.Calendar;
public class Test2 {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
Date sqlTodayDate = today.getTime();
//28 days ago
java.util.Date thresholdPast28Date = BasicUtils.setTimeInDays(sqlTodayDate, -28);
System.out.println(thresholdPast28Date);
//56 days ago
java.util.Date thresholdPast56Date = BasicUtils.setTimeInDays(sqlTodayDate, -56);
System.out.println(thresholdPast56Date);
}
}
class BasicUtils {
public static Date setTimeInDays(Date startingTime, Integer days){
Calendar c = Calendar.getInstance();
c.setTime(startingTime);
c.add(Calendar.DATE, days);//a day in the future or past
return c.getTime();
}
}
注意:Calendar.getInstance()
需要一些时间才能执行。
您可以直接使用java.util.Date sqlTodayDate = new java.util.Date()
。
如果您坚持使用java.sql.Date
,以下内容适用于您。
import java.sql.Date;
import java.util.Calendar;
public class Test2 {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
Date sqlTodayDate = new Date(today.getTimeInMillis());
//28 days ago
java.util.Date thresholdPast28Date = BasicUtils.setTimeInDays(sqlTodayDate, -28);
System.out.println(thresholdPast28Date);
//56 days ago
java.util.Date thresholdPast56Date = BasicUtils.setTimeInDays(sqlTodayDate, -56);
System.out.println(thresholdPast56Date);
}
}
class BasicUtils {
public static java.util.Date setTimeInDays(Date startingTime, Integer days){
Calendar c = Calendar.getInstance();
c.setTime(startingTime);
c.add(Calendar.DATE, days);//a day in the future or past
return c.getTime();
}
}