2007/02
意外とどうやればいいかわかりにくいのが、日付の計算です。
一番シンプルなのがCalendarをm秒に直して引き算して1日のm秒で割る
方法です。
package sample; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class DateCalc { /** 1日(24時間)をm秒で表したもの */ public static final long ONE_DATE_TIME_MILLIS = 1000 * 60 * 60 * 24; /** * 現在日付とargs[0]の差が何日間かを求める * @param args yyyy/MM/dd */ public static void main(String[] args) { Calendar calendar1 = new GregorianCalendar(); DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; try { date = dateFormat.parse(args[0]); } catch (ParseException e) { e.printStackTrace(); return; } Calendar calendar2 = new GregorianCalendar(); calendar2.setTime(date); long time1 = calendar1.getTimeInMillis(); long time2 = calendar2.getTimeInMillis(); long result = (time1 - time2) / ONE_DATE_TIME_MILLIS; String dateString1 = dateFormat.format(calendar1.getTime()); String dateString2 = dateFormat.format(calendar2.getTime()); System.out.println( dateString1 + "は" + dateString2 + "から" + result + "日後"); } }
[実行結果]
>javac -d . DateCalc.java
>java sample.DateCalc 2007/01/01
2007/02/01は2007/01/01から31日後
>java sample.DateCalc 2007/01/01
2007/02/01は2007/01/01から31日後
自分の誕生日を入れてみれば、自分が何日間生きてるかが
分かります。僕は2007/2/1に実行したら10073日でした。人生長っ!!?