2017-10-05 13 views
0

Javaで、現在の日付または保存された日付を取得するメソッドを作成しようとしました。前後に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 

- 問題はここにあなたがこの行にjava.sql.Datejava.util.Dateをキャストしようとしているであるこの

//today date 
Calendar today = Calendar.getInstance(); 
Date sqlTodayDate = (Date) today.getTime(); 
+0

このお試しください: 'java.util.Date todayDate = today.getTime()を;' – procrastinator

+0

まあ、おそらくあなたの 'setTimeInDays'方法はなくJava' 'よりjava.sql.Date'をインポートしていますクラスです。ユーティリティ。どちらのタイプのものが使えますか? –

+0

よく - 両方ですか?保存された日付のために働いています - そして今日の日付を取得してメソッドにプッシュしようとしています - それが私のバグの原因です - しかし、util.dateをsql.dateに変換する方法がわかりません - –

答えて

0

のように、今日の日付を取得。

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