サンプルコード
import java.util.*;
import java.text.*;
import java.util.regex.*;
public class DateSample {
public static void main(String[] args) throws ParseException {
Calendar cal = Calendar.getInstance();
int year = cal.get(cal.YEAR);
int month = cal.get(cal.MONTH) + 1;
int date = cal.get(cal.DATE);
int dayOfWeek = cal.get(cal.DAY_OF_WEEK) - 1;
int ampm = cal.get(cal.AM_PM);
int hour = cal.get(cal.HOUR);
int minute = cal.get(cal.MINUTE);
int second = cal.get(cal.SECOND);
String[] days = {"日", "月", "火", "水", "木", "金", "土"};
String[] ampms = {"午前", "午後"};
System.out.println(year + "年" + month + "月" + date + "日(" + days[dayOfWeek] + ")");
System.out.println(ampms[ampm] + hour + "時" + minute + "分" + second + "秒");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println("ISO 8601形式で出力をする");
System.out.println(sdf.format(cal.getTime()));
cal.add(Calendar.DATE, -3);
System.out.println("月をまたいだ数日前の出力結果");
System.out.println(sdf.format(cal.getTime()));
cal.add(Calendar.DATE, 6);
System.out.println("日付加減をした後に、さらに加減した場合の出力結果");
System.out.println(sdf.format(cal.getTime()));
cal.clear();
System.out.println("Calendar クラスの clear メソッドを実行した後の出力結果");
System.out.println(sdf.format(cal.getTime()));
String sampleDate = "2010/03/03 15:05:12";
Date dateFromString;
try {
dateFromString = DateFormat.getDateInstance().parse(sampleDate);
System.out.println("文字列をDateクラスに変換して形式を整えて出力");
System.out.println(sdf.format(dateFromString));
} catch (ParseException e) {
throw e;
}
Pattern regexDate = Pattern.compile("^(\\d{1,4})/([0-1]\\d)/([0-3]\\d) ([0-2]\\d):([0-5]\\d):([0-5]\\d)");
Matcher dateParts = regexDate.matcher(sampleDate);
if (dateParts.find()) {
String sYear = dateParts.group(1);
String sMonth = dateParts.group(2);
String sDate = dateParts.group(3);
String sHour = dateParts.group(4);
String sMinute = dateParts.group(5);
String sSecond = dateParts.group(6);
System.out.println("正規表現から取得した日時を文字列として出力");
System.out.println(sYear + "-" + sMonth + "-" + sDate + " " + sHour + ":" + sMinute + ":" + sSecond);
int iYear = Integer.parseInt(sYear);
int iMonth = Integer.parseInt(sMonth);
int iDate = Integer.parseInt(sDate);
int iHour = Integer.parseInt(sHour);
int iMinute = Integer.parseInt(sMinute);
int iSecond = Integer.parseInt(sSecond);
Calendar strToCalendar = Calendar.getInstance();
strToCalendar.set(iYear, iMonth, iDate, iHour, iMinute, iSecond);
strToCalendar.add(Calendar.YEAR, 1);
System.out.println("正規表現から取得した日付をCalendarクラスに変換して、1年後の日時を出力");
System.out.println(sdf.format(strToCalendar.getTime()));
} else {
System.out.println("指定した日時形式ではありません。");
}
String beforeDate = "2010-02-14";
String afterDate = "2010-03-13";
try {
SimpleDateFormat diff = new SimpleDateFormat("yyyy-MM-dd");
Date febrary = diff.parse(beforeDate);
Date march = diff.parse(afterDate);
long difference = march.getTime() - febrary.getTime();
difference = difference / (24 * 60 * 60 * 1000);
System.out.println("2010年2月14日から2010年3月13日までの日数を表す");
System.out.println("日数は " + difference + " 日あります");
System.out.println("日数分の日付を表示する");
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
startDate.setTime(febrary);
endDate.setTime(march);
while (startDate.before(endDate)) {
System.out.println(diff.format(startDate.getTime()));
startDate.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
throw e;
}
}
}
実行結果
2010年3月2日(火)
午後8時0分36秒
ISO 8601形式で出力をする
2010-03-02T20:00:36+0900
月をまたいだ数日前の出力結果
2010-02-27T20:00:36+0900
日付加減をした後に、さらに加減した場合の出力結果
2010-03-05T20:00:36+0900
Calendar クラスの clear メソッドを実行した後の出力結果
1970-01-01T00:00:00+0900
文字列をDateクラスに変換して形式を整えて出力
2010-03-03T00:00:00+0900
正規表現から取得した日付を文字列として出力
2010-03-03 15:05:12
正規表現から取得した日付をCalendarクラスに変換して、1年後の日付を出力
2011-04-03T15:05:12+0900
Calendarクラスに変換して月末日を取得する
月末の日付は 30 です
2010年2月14日から2010年3月13日までの日数を表す
日数は 27 日あります
日数分の日付を表示する
2010-02-14
2010-02-15
2010-02-16
2010-02-17
2010-02-18
2010-02-19
2010-02-20
2010-02-21
2010-02-22
2010-02-23
2010-02-24
2010-02-25
2010-02-26
2010-02-27
2010-02-28
2010-03-01
2010-03-02
2010-03-03
2010-03-04
2010-03-05
2010-03-06
2010-03-07
2010-03-08
2010-03-09
2010-03-10
2010-03-11
2010-03-12