Calendarクラスを用いたサンプルプログラム

import java.util.GregorianCalendar;
import java.util.Calendar;

public class CalendarSample {
    static void printCalendar(GregorianCalendar cal){
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH);
        int date = cal.get(Calendar.DATE);

        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);
        int second = cal.get(Calendar.SECOND);
        int millisec = cal.get(Calendar.MILLISECOND);

        System.out.println(year + "年" + month + "月" + date + "日" + hour + "時" + minute + "分" + second + "." + millisec + "秒");
    }

    public static void main(String[] args){

        //はてなブックマークのフォーマット                                      
        String s = new String("2009-05-28T16:32:54+09:00");

        // (メモ)もっとスマートな方法はないのか?                               
        int year = Integer.parseInt(s.substring(0,4));
        int month = Integer.parseInt(s.substring(5,7));
        int date = Integer.parseInt(s.substring(8,10));
        int hour = Integer.parseInt(s.substring(11,13));
        int minute = Integer.parseInt(s.substring(14,16));
        int second = Integer.parseInt(s.substring(17,19));

        GregorianCalendar cal = new GregorianCalendar(year, month, date, hour, minute, second);
        printCalendar(cal);

        //////////////////////////////////////////////////////////////          

        // 注:現在の時刻を取得するとき,月(month)は 0〜11の値をとるから,      
        // その分を調整する                                                     
        GregorianCalendar cal2 = new GregorianCalendar();
        cal2.set(Calendar.MONTH, cal2.get(Calendar.MONTH)+1);
        printCalendar(cal2);

        //////////////////////////////////////////////////////////////          

        // 2つの時間の差を求める                                               
        long n = cal2.getTimeInMillis() - cal.getTimeInMillis();
        long d_day = n / (24 * 60 * 60 * 1000); // 日単位の差                   
        long d_hour = n / (60 * 60 * 1000);     // 時単位の差                   
        long d_minute = n / (60 * 1000);        // 分単位の差                   
        System.out.println("差は" + d_day + "日間 or " + d_hour + "時間 or " + d_minute + "分間");
    }
}