3

私は2つ持っていDateます。これら 2 つの日付の違いを日数でどのように見分けることができますか?

は聞いたことがあるがSimpleDateFormat、使い方が分からない。

私はこれを試しました:

String fromdate = "Apr 10 2011";

SimpleDateFormat sdf;
sdf = new SimpleDateFormat("MMM DD YYYY"); 

sdf.parse(fromdate);

Calendar cal = Calendar.getInstance();
cal.setTime(sdf);

私もこれを試しました:

String date1 = "APR 11 2011";
String date2 = "JUN 02 2011";
String format = "MMM DD YYYY";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date dateObj1 = sdf.parse(date1);
Date dateObj2 = sdf.parse(date2);
long diff = dateObj2.getTime() - dateObj1.getTime();
int diffDays = (int) (diff / (24* 1000 * 60 * 60));
System.out.println(diffDays);

しかし、「不正なパターン文字 'Y'」という例外が発生しました。

4

5 に答える 5

1

2 つの Date オブジェクトがありますか?

答えはこれ以上簡単ではありません。

public double computeDaysBetweenDates(Date d1, Date d2) {
    long diff;

    diff = d2.getTime() - d1.getTime();
    return ((double) diff) / (86400.0 * 1000.0);
}

Date オブジェクトは、1970 年 1 月 1 日の午前 0 時 (UTC) から経過したミリ秒数である UTC POSIX EPOCH 時間を含む long の薄いラッパーです。後の値から前の値を差し引くだけで、間隔のミリ秒数を取得できます。それを知っていれば、1 日のミリ秒数で割るだけです。

この回答は、1 日が 86400 秒であると想定していることに注意してください。これはほとんど真実です。

日付文字列をフォーマットした場合でも、このソリューションは適切であることに注意してください。最初に日付/時刻を Date オブジェクトに解析できる場合でも、それらを使用してこの関数を呼び出すことができます。

于 2013-05-03T22:53:34.297 に答える
1

カレンダーを使ってこの問題を解決した記事はこちらです。 http://tripoverit.blogspot.com/2007/07/java-calculate-difference-between-two.html

Joda Time もこのシナリオの API サポートを提供していると思います

于 2011-06-02T19:16:46.563 に答える
0

Java の 2 つの日付文字列の違い

これは、いくつかのアイデアを得るのに役立ちます

于 2011-06-02T22:27:30.960 に答える
0

このコードは、必要なことを行う方法を示しているはずです...

public static void main(String[] args) {
    Calendar firstOfTheMonthCalendar = Calendar.getInstance();
    firstOfTheMonthCalendar.set(Calendar.DAY_OF_MONTH, 1);

    Date firstOfTheMonthDate = firstOfTheMonthCalendar.getTime();
    Date nowDate = new Date();

    int diffInDays = determineDifferenceInDays(firstOfTheMonthDate, nowDate);
    System.out.println("Number of days betweens dates: " + diffInDays);
}

private static int determineDifferenceInDays(Date date1, Date date2) {
    Calendar calendar1 = Calendar.getInstance();
    calendar1.setTime(date1);
    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTime(date2);
    long diffInMillis = calendar2.getTimeInMillis() - calendar1.getTimeInMillis();
    return (int) (diffInMillis / (24* 1000 * 60 * 60));
}
于 2011-06-02T19:15:52.940 に答える