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 + "分間");
}
}