Javaで日時(日付と時刻)を扱う方法

日付と時刻に関するクラス

クラス 説明
java.sql.Date SQLのDATE型
java.text.SimpleDateFormat 日付と時刻のフォーマット(書式)を扱うクラス
java.util.Calendar 暦を表すクラス
java.util.Date 日付と時刻を表すクラス

java.util.Dateクラス

java.util.Dateは、日付と時刻を表すクラスであり、ミリ秒単位の精度を持つ。

SQLのDATE型はjava.sql.Dateであり、java.util.Dateとは異なる。

java.util.Dateクラスのコンストラクタ
コンストラクタ 説明
Date() Dateオブジェクトを作成し、現在の日付と時刻で初期化する。
Date(long date) Dateオブジェクトを作成し、指定した日時(1970年1月1日 00:00:00からのミリ秒数)で初期化する。
java.util.Dateクラスのメソッド
メソッド 説明
getTime 1970年1月1日 00:00:00 GMTからのミリ秒を返す。
java.util.Date now = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy'年'MM'月'dd'日'");
System.out.println(sdf.format(now));

文字列をCalendar型に変換する

String型をCalendar型に変換する。

String date = "2017年06月14日";
Calendar calendar = Calendar.getInstance();
try {
  calendar.setTime(new SimpleDateFormat("yyyy年MM月dd日").parse(date));
} catch (ParseException e) {
  e.printStackTrace();
}

Calendar型を文字列に変換する

Calendar型をString型に変換する。

Calendar now = Calendar.getInstance();
String tody = new SimpleDateFormat("yyyy年MM月dd日").format(now.getTime());

1日後、1日前、1か月後、1か月前、1年後、1年前を求める

1日後

Calendar now = Calendar.getInstance();
now.add(Calendar.DATE, 1);

1日前

Calendar now = Calendar.getInstance();
now.add(Calendar.DATE, -1);

1か月後

Calendar now = Calendar.getInstance();
now.add(Calendar.MONTH, 1);

1か月前

Calendar now = Calendar.getInstance();
now.add(Calendar.MONTH, -1);

1年後

Calendar now = Calendar.getInstance();
now.add(Calendar.YEAR, 1);

1年前

Calendar now = Calendar.getInstance();
now.add(Calendar.YEAR, -1);

月初や月末を求める

月初(1日)の日付を求める

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);

月末の日付を求める

Calendar calendar = Calendar.getInstance();
int max = calendar.getActualMaximum(Calendar.DATE);