を修正することができ、ライブラリ、分、秒、ミリ秒:
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
\あなたは絶対に 'DD-MM-yyyy'形式を必要ですか? – Taelsin
この場合、フォーマットは重要ではありません。日付が過去または将来の日付であることを確認する必要があります。 – kaya
日付をカレンダーに変換してからDAY_OF_YEARの差を計算することで行います(366日の閏年を考慮する)。あなたに正しい違いをもたらします。 jdk 1.1 – Jimmy