2016-08-24 17 views
3

私は時間のない日付を取得するには問題がある、私は日付の違いを確認することができます時間を00:00に設定したい。CN1で時間を持たない現在の日付を取得

私の手順は、これまでにしよう:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
Date now = new Date(); 
try { 
    now = dateFormat.parse(dateFormat.format(now)); 
} catch (ParseException e1) { 
    // 
} 

をこのコードはまだ時間がかかり、私はここに、この質問からShobbi

で答えHow do I get a Date without time in Java?を、このようなコードを取った私は前に、より良い結果を持っていたが、時間依然として01:00に設定されていました。 誰かが私にとってより良い解決策を持っていますか? SQLiteデータベースの日付と実際の日を比較する必要があります。 CN1 Datelibsはそうイムは、メソッド

+0

\あなたは絶対に 'DD-MM-yyyy'形式を必要ですか? – Taelsin

+0

この場合、フォーマットは重要ではありません。日付が過去または将来の日付であることを確認する必要があります。 – kaya

+0

日付をカレンダーに変換してからDAY_OF_YEARの差を計算することで行います(366日の閏年を考慮する)。あなたに正しい違いをもたらします。 jdk 1.1 – Jimmy

答えて

1

なぜ文字列を使用しないを使用して制限され、JDK1.3に基づいていることを念頭に置い

クマ?あなたはフォーマットを使用する場合yyyy-MM-ddString.compareTo(otherDateString) 2つの日付がどのように関連しているかを教えてくれなければならない(1の前、後、または他のと同じ日)たとえば

:ジョダ時間を使用する

String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 
//get the other date into a string 
boolean isInThePast = (today.compareTo(otherDateString) > 0); 
+0

残念ながら、私のDateオブジェクトにはcompareToメソッドがありません – kaya

+0

@kaya私は日付オブジェクトを使用しませんでした。 – Taelsin

+1

はい、あなたは間違っていました=) あなたのコードをテストしたこともあります。 – kaya

-1

てみてくださいあなたが時間を考慮せずに、このような日付を比較することができ、あなたの問題

+0

ジョーダンタイムライブラリはコードネーム1でサポートされていません – Diamond

+0

ああ、そうです!私はCN1の限界を覚えていません。しかし、ジョーダの時間はこのように便利です! – kepler

1

を修正することができ、ライブラリ、分、秒、ミリ秒:

public static int daysBetweenNowAndDate(String date, String format) { 
    try { 
     DateFormat dateFormat = new SimpleDateFormat(format); //Change format to your incoming date string format 
     Calendar now = Calendar.getInstance(); 
     now.set(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DATE), 0, 0, 0); 
     now.set(Calendar.MILLISECOND, 0); 

     Calendar otherDate = Calendar.getInstance(); 
     otherDate.setTime(dateFormat.parse(date)); 
     otherDate.set(otherDate.get(Calendar.YEAR), otherDate.get(Calendar.MONTH), otherDate.get(Calendar.DATE), 0, 0, 0); 
     otherDate.set(Calendar.MILLISECOND, 0); 

     long divisor = 86400000; // 24 hours (24 * 60 * 60 * 1000) 
     long num = now.getTime().getTime() - otherDate.getTime().getTime(); 
     return (int) ((num + divisor - 1)/divisor); 
    } catch (ParseException ex) { 
     return -999999; 
    } 
} 

テスト:いくつかの提案をした後、答えを見つけることが

System.out.println(daysBetweenNowAndDate("2016-08-22", "yyyy-MM-dd")); //2 
System.out.println(daysBetweenNowAndDate("22-08-2016", "dd-MM-yyyy")); //2 
System.out.println(daysBetweenNowAndDate("2016-08-22 22:45", "yyyy-MM-dd HH:mm")); //2 
System.out.println(daysBetweenNowAndDate("22-08-2016 22:45:00", "dd-MM-yyyy HH:mm:ss")); //2 
System.out.println(daysBetweenNowAndDate("2016-08-22 22:45", "dd-MM-yyyy HH:mm:ss")); //-999999 because the format and the date don't correspond 
+1

仲間ありがとう、最初の4つの行はこの場合私を助けるはずです(y) – kaya

+1

助けがあれば、あなたは歓迎、upvoteと答えとしてマークしています。 – Diamond

+0

Hey Mate、あなたのコードをコピーしましたが、構文エラーが表示されます:\ – kaya

0

、あなたのおかげで人々

Calendar now = Calendar.getInstance(); 
now.set(Calendar.HOUR_OF_DAY, 0); 
now.set(Calendar.MINUTE, 0); 
now.set(Calendar.SECOND, 0); 
now.set(Calendar.MILLISECOND, 0); 
now.getTime(); 

ここで重要なことは、代わりにcom.codename1.ui.Calendarの輸入java.util.Calendarを取ることです。

はまた、私のミスのビットは、このケースでは、私がカレンダーを使用して、間違ったインポートを使用して混乱してしまった:

関連する問題