在日期计算方法中的Java日期铸造问题
问题描述:
我试着在Java中创建一个方法,它将采用当前日期或存储日期 - 并且在x之前或之后获得x天。在日期计算方法中的Java日期铸造问题
//28 days ago
java.util.Date thresholdPast28Date = BasicUtils.setTimeInDays(sqlTodayDate, -28);
//56 days ago
java.util.Date thresholdPast56Date = BasicUtils.setTimeInDays(sqlTodayDate, -56);
功能看起来像这样
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();
}
我得到的错误,虽然试图把今天的日期到这个方法。
java.util.Date cannot be cast to java.sql.Date
- 让今天几号这样
//today date
Calendar today = Calendar.getInstance();
Date sqlTodayDate = (Date) today.getTime();
答
这里的问题是你想投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();
}
}
试试这个:'java.util.Date todayDate = today.getTime();' – procrastinator
那么想必你'setTimeInDays'方法是在导入真实'java.sql.Date'而不是'的Java类。 util.Date'。你想要哪种类型的产品? –
好 - 都是?它的存储日期工作 - 现在我试图获取今天的日期,并将其推入方法 - 这是什么导致我的错误 - 但我不确定如何将util.date转换为sql.date - –