文字列形式の日付が2つあり(例:2012-04-23、2012-03-08)、それらの違いを見つけたいと思います。
Javaでそれを計算するための最良の方法は何ですか?
私は時間ではなく日付だけに関心があります
次を使用して文字列を日付に変換できます。
String dateString = "2012-04-23";
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(dateString);
SimpleDateFormatについては、ここでさらに読むことができます。
2つの日付の違いについては、次のようにミリ秒単位で計算できます。
int milliseconds = dateOne.getTime() - dateTwo.getTime();
getTime()
1970年1月1日からのミリ秒数を返します。
数日で変換するには、次を使用します。
int days = milliseconds / (1000 * 60 * 60 * 24)
プロジェクトにサードパーティのjarを追加する場合は、jodatimeを確認してください。
DateTimeFormat
DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd / MM / yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(your-string);
interval
間隔間隔=新しい間隔(time1、time2);
また、jodatimelibの概念である間隔と期間の違いを確認することもできます。
SimpleDateFormatを使用して文字列をDateオブジェクトに変換し、DateでgetTime()メソッドを使用して同等の時間をミリ秒単位で取得します。2つのミリ秒の値の差を取ります。
以下のように、DateFormat、Date、Calendarの組み合わせが必要になる場合があります。
DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = dFormat.parse("2012-04-23");
Date date2 = dFormat.parse("2012-03-08");
long timeDifInMillis = date1.getTime() - date2.getTime();
Date dateDiff = new Date(timeDifInMillis);
Calendar diffCal = Calendar.getInstance();
diffCal.setTime(dateDiff);
System.out.println("Days="+diffCal.get(Calendar.DAY_OF_MONTH));
System.out.println("Months="+diffCal.get(Calendar.MONTH));
System.out.println("Years="+(diffCal.get(Calendar.YEAR)-1970));
SimpleDateFormatを確認してください。解析機能があります。