有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我曾尝试用Java创建一个方法,它将获取当前日期或存储的日期,并在之前或之后获取x天

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

共 (1) 个答案

  1. # 1 楼答案

    这里的问题是,您试图在这一行中将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();
        }
    }