時間関数の備忘録

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 時間関数の備忘録
 */
public class Timesample {
	public static void main(String[] args) throws ParseException {
		Timestamp      ts;
		java.util.Date utildate;
		java.sql.Date  sqldate;
		String sDate;

		// 文字列(yyyymmddhhmmss) → Timestamp
		DateFormat dateformat = new SimpleDateFormat("yyyyMMddhhmmss");
		ts = new Timestamp(dateformat.parse("20090716010203").getTime());

		// 文字列(yyyymddhhmmss) → Date
		utildate = new java.util.Date(dateformat.parse("20090716010203").getTime());
		sqldate  = new java.sql.Date(dateformat.parse("20090716010203").getTime());

		// 文字列(yyyymmddhhmmss) → Calendar
		java.util.Date date = new java.util.Date( dateformat.parse("20090716010203").getTime());
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);

		// Timestamp → Date
		utildate = new java.util.Date(ts.getTime());
		sqldate  = new java.sql.Date(ts.getTime());

		// Date → Timestamp
		ts = new Timestamp(utildate.getTime());
		ts = new Timestamp(sqldate.getTime());

		// Date → 文字列
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		sDate = sdf1.format(utildate);
		System.out.println("utildate="+sDate);
		sDate = sdf1.format(sqldate);
		System.out.println("sqldate ="+sDate);

		// Timestamp → 文字列
		sDate = sdf1.format(ts);
		System.out.println("timestamp="+sDate);

		// 1日前の日付
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, -1);
		utildate = cal.getTime();
		sqldate  = new java.sql.Date(utildate.getTime());
		sDate = sdf1.format(utildate);
		System.out.println("1日前util:" + sDate);
		sDate = sdf1.format(sqldate);
		System.out.println("1日前sql :" + sDate);

		// 1年前の日付
		cal.add(Calendar.YEAR, -1);
		// 1ヶ月前の日付
		cal.add(Calendar.MONDAY, -1);
		// 1時間前
		cal.add(Calendar.HOUR_OF_DAY, -1);
		// 1分前
		cal.add(Calendar.MINUTE, -1);
		// 1秒前
		cal.add(Calendar.SECOND, -1);

		// 月末の日付
		cal.set(Calendar.DATE, 1);   // 日付を1日にする
		cal.add(Calendar.MONTH, 1);  // 月を1月後にする
		cal.add(Calendar.DATE, -1);  // 1日戻して月末に
		System.out.println("月末日:" + cal.get(Calendar.DATE));
		System.out.println("月末日:" + cal.getActualMaximum(Calendar.DAY_OF_MONTH));
	}
}