日期计算方法中的Java日期转换问题

时间:2017-10-05 10:08:57

标签: java

我尝试在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}}

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();
    }
}