クラス | 説明 |
---|---|
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);