| クラス | 説明 |
|---|---|
| java.sql.Date | SQLのDATE型 |
| java.text.SimpleDateFormat | 日付と時刻のフォーマット(書式)を扱うクラス |
| java.util.Calendar | 暦を表すクラス |
| java.util.Date | 日付と時刻を表すクラス |
java.util.Date は日付と時刻を表すクラスであり、ミリ秒単位の精度を持つ。
public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>
SQLのDATE型はjava.sql.Dateであり、java.util.Dateとは異なる。
| コンストラクタ | 説明 |
|---|---|
| Date() | Dateオブジェクトを作成し、現在の日付と時刻で初期化する。 |
| Date(long date) | Dateオブジェクトを作成し、指定した日時(1970年1月1日 00:00:00からのミリ秒数)で初期化する。 |
| メソッド | 説明 |
|---|---|
| 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));
java.util.Calendar は暦を表す抽象クラスである。
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>
java.util.Calendar は抽象クラスであるため、new 演算子で直接インスタンス化することはできない。
$ more Example.java
import java.util.Calendar;
public class Example {
public static void main(String[] args) {
Calendar today = new Calendar();
System.out.println(today.get(Calendar.YEAR));
}
}
$ javac Example.java
Example.java:5: error: Calendar is abstract; cannot be instantiated
Calendar today = new Calendar();
^
1 error
java.util.Calendar 抽象クラスをインスタンス化するには、getInstance 静的メソッドを使う。静的メソッドとは、クラスをインスタンス化せずに呼び出せるメソッドのことである。
$ more Example.java
import java.util.Calendar;
public class Example {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
System.out.println(today.get(Calendar.YEAR));
}
}
$ javac Example.java
$ java Example
2023
指定されたカレンダ・フィールドの値を返す。
public int get(int field)
get メソッドには以下に示すフィールドを指定できる。
| フィールド | 説明 |
|---|---|
| AM_PM | HOUR が正午より前であるかあとであるかを示す。 |
| DATE | 月の日を示す。 |
| DAY_OF_MONTH | 月の日を示す。 |
| DAY_OF_WEEK | 曜日を示す。 |
| DAY_OF_WEEK_IN_MONTH | 現在の月の何度目の曜日かを示す。 |
| DAY_OF_YEAR | 現在の年の何日目かを示す。 |
| DST_OFFSET | 夏時間のオフセットをミリ秒単位で示す。 |
| ERA | ユリウス暦のADまたはBCなどの年代を示す。 |
| HOUR | 午前または午後の何時かを示す。 |
| HOUR_OF_DAY | 時間を示す。 |
| MILLISECOND | ミリ秒を示す。 |
| MINUTE | 分を示す。 |
| MONTH | 月を示す。 |
| SECOND | 秒を示す。 |
| WEEK_OF_MONTH | 現在の月の週番号を示す。 |
| WEEK_OF_YEAR | 現在の年の週番号を示す。 |
| YEAR | 年を示す。 |
| ZONE_OFFSET | GMTから直接計算したオフセットをミリ秒単位で示す。 |
import java.util.Calendar;
public class Example {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
/* calendar fields */
System.out.println(today.get(Calendar.YEAR));
System.out.println(today.get(Calendar.MONTH));
System.out.println(today.get(Calendar.DATE));
}
}
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型をString型に変換する。
Calendar now = Calendar.getInstance();
String tody = new SimpleDateFormat("yyyy年MM月dd日").format(now.getTime());
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);