1

重複の可能性:
Javaでの日付の差の計算
Javaで期間を計算して出力をフォーマットするにはどうすればよいですか?

2つの日付が文字列として与えられ、それらがこの形式で8/11/11 9:16:36 PMあるとすると、2つの日付の差を計算できるようにそれらをJava Dateオブジェクトに変換するにはどうすればよいですか?

4

3 に答える 3

2

両方の時間がGMT/UTCである限り、実行しdate1.getTime() - date2.getTime()てから結果を86400000で割って、日数を取得できます。残りはおそらくかなり直感的です。

編集-編集された質問に基づく

文字列を日付に変換するには、SimpleDateFormatクラスを使用します。

String yourDateString = "8/11/11 9:16:36 PM";
SimpleDateFormat format =
            new SimpleDateFormat("MM/dd/yy HH:mm:ss a");
Date yourDate = format.parse(yourDateString);
于 2011-08-12T01:37:30.320 に答える
2

Dateのゲッターの大部分は非推奨になり、Calendarメソッドに置き換えられました。これがあなたがそれをする方法です

Date date1, date2; //initialized elsewhere
Calendar day1 = new Calendar();
day1.setTime(date1)

Calendar day2 = new Calendar();
day2.setTime(date2);


int yearDiff, monthDiff, dayDiff, hourDiff, minuteDiff, secondDiff;
yearDiff = Math.abs(day1.get(Calendar.YEAR)-day2.get(Calendar.YEAR));
monthDiff = Math.abs(day1.get(Calendar.MONTH)-day2.get(Calendar.MONTH));
dayDiff = Math.abs(day1.get(Calendar.DAY_OF_YEAR)-day2.get(Calendar.DAY_OF_YEAR));
hourDiff = Math.abs(day1.get(Calendar.HOUR_OF_DAY)-day2.get(Calendar.HOUR_OF_DAY));
minuteDiff = Math.abs(day1.get(Calendar.MINUTE)-day2.get(Calendar.MINUTE));
secondDiff = Math.abs(day1.get(Calendar.SECOND)-day2.get(Calendar.SECOND));

その後、それらの番号で好きなことをすることができます。

于 2011-08-12T01:50:45.533 に答える
1

フォーマットに一致するSimpleDateFormatを定義し(Java docは非常に単純です)、parseメソッドを使用して適切なDateオブジェクトを取得します。これにより、2つの日付の差を簡単に計算できます。この違いが生じたら、おそらく「手動で」日数/時間/分/秒を計算するのが最善ですが、SimpleDateFormat(またはその他のフォーマットメカニズム)を使用して適切な値を表示することも可能です。一般的な方法。

于 2011-08-12T01:51:05.873 に答える