public class Date extends Object implements Serializable, Cloneable, Comparable<Date>
Dateは、特定のインスタントを表すもので、その精度はミリ秒です。
 
 JDK 1.1より前のDateクラスには、2つの追加機能がありました。 まず、日付を年、月、日、時、分、秒の値として解釈することができました。 さらに、日付文字列のフォーマットを構文解析することができました。 しかし、これらの機能のAPIは国際化の対象にはなりませんでした。 JDK 1.1からは、日付と時間フィールドの間の変換にはCalendarクラスを、日付文字列のフォーマットと構文解析にはDateFormatクラスをそれぞれ使用する必要があります。 Dateの対応するメソッドは非推奨です。 
 
 Dateクラスは、UTC (Universal Coordinate Time)を反映することを意図していますが、Java仮想マシンのホスト環境によってはこれを正確に行えない可能性があります。 ほとんどすべての最新のオペレーティング・システムは、あらゆる場合において1 日 = 24 × 60 × 60 = 86400秒と仮定しています。 しかし、UTCにおいては毎年約1回か2回「うるう秒」と呼ばれる余分な秒が発生します。 うるう秒は常にその日の最後の秒として追加され、それは常に12月31日かまたは6月30日です。 たとえば、1995年の最後の分は、うるう秒の追加により長さが61秒でした。 ほとんどのコンピュータのクロックは、うるう秒の違いを反映できるほど正確ではありません。 
 
コンピュータ標準のいくつかは、GMT (Greenwich Mean Time、グリニッジ標準時)によって定義されています。これはUT (Universal Time)と同等です。 GMTはこの標準の「一般的な」名前です。UTは、この標準の「科学的な」名前です。 UTCとUTの違いは、UTCが原子時計に基づくのに対して、UTは天文学的な観測に基づくことです。これは実用的な目的からするとほとんど違いはありません。 地球の自転は一定ではないので(地球は複雑に遅くなったり速くなったりする)、UTは常に一定に流れるわけではありません。 うるう秒は、UTCをUT1の0.9秒以内に維持する必要があってUTCに導入されました。このUT1はUTのバージョンである訂正が施されています。 同様にほかにも時間と日付のシステムがあります。たとえば、衛星ベースのGPS (Global Positioning System、地球位置確認システム)はUTCに同期していますが、うるう秒の調整はされません。 詳細情報のソースにはU.S. Naval Observatory (米国海軍天文台)があり、特に次の「Directorate of Time」、
     http://tycho.usno.navy.mil
 および次の「Systems of Time」の定義を参照してください。
     http://tycho.usno.navy.mil/systime.html
 
 年、月、日、時間、分、秒の値を受け取るか返すクラスDateのすべてのメソッドにおいて、次の表示が使用されます。
 
- 1900によって表されます。
 すべての場合において、この目的でメソッドに与えられた引数は指定された範囲に入る必要はありません。たとえば、日付を1月32日として指定した場合は、2月1日と解釈されます。
DateFormat, Calendar, TimeZone, 直列化された形式| コンストラクタ | 説明 | 
|---|---|
| Date() | Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、割り当てられたときの時刻を、もっとも近いミリ秒単位で表します。 | 
| Date(int year, int month, int date) | 非推奨。 
 JDKバージョン1.1以降は、 Calendar.set(year+1900, month, date)またはGregorianCalendar(year+1900, month, date)に置き換えられました。 | 
| Date(int year, int month, int date, int hrs, int min) | 非推奨。 
 JDKバージョン1.1以降は、 Calendar.set(year+1900, month, date, hrs, min)またはGregorianCalendar(year+1900, month, date, hrs, min)に置き換えられました。 | 
| Date(int year, int month, int date, int hrs, int min, int sec) | 非推奨。 
 JDKバージョン1.1以降は、 Calendar.set(year+1900, month, date, hrs, min, sec)またはGregorianCalendar(year+1900, month, date, hrs, min, sec)に置き換えられました。 | 
| Date(long date) | Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、「元期」(すなわち1970年1月1日00:00:00 GMT)である標準時からの指定されたミリ秒数を表します。 | 
| Date(String s) | 非推奨。 
 JDK Version 1.1以降は、 DateFormat.parse(String s)に置き換えられています。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| boolean | after(Date when) | この日付が、指定された日付より後にあるかどうかを判定します。 | 
| boolean | before(Date when) | この日付が、指定された日付より前にあるかどうかを判定します。 | 
| Object | clone() | このオブジェクトのコピーを返します。 | 
| int | compareTo(Date anotherDate) | 順序付けのために2つのDateを比較します。 | 
| boolean | equals(Object obj) | 2つの日付が等しいかどうかを比較します。 | 
| static Date | from(Instant instant) | InstantオブジェクトからDateのインスタンスを取得します。 | 
| int | getDate() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.DAY_OF_MONTH)に置き換えられています。 | 
| int | getDay() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.DAY_OF_WEEK)に置き換えられています。 | 
| int | getHours() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.HOUR_OF_DAY)に置き換えられています。 | 
| int | getMinutes() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.MINUTE)に置き換えられています。 | 
| int | getMonth() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.MONTH)に置き換えられています。 | 
| int | getSeconds() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.SECOND)に置き換えられています。 | 
| long | getTime() | Dateオブジェクトで表される、1970年1月1日00:00:00 GMTからのミリ秒数を返します。 | 
| int | getTimezoneOffset() | 非推奨。 
 JDK version 1.1以降は、 -(Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET))/(60 * 1000)に置き換えられています。 | 
| int | getYear() | 非推奨。 
 JDK version 1.1以降は、 Calendar.get(Calendar.YEAR) - 1900に置き換えられています。 | 
| int | hashCode() | このオブジェクトに対するハッシュ・コード値を返します。 | 
| static long | parse(String s) | 非推奨。 
 JDK Version 1.1以降は、 DateFormat.parse(String s)に置き換えられています。 | 
| void | setDate(int date) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.DAY_OF_MONTH, int date)に置き換えられています。 | 
| void | setHours(int hours) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.HOUR_OF_DAY, int hours)に置き換えられています。 | 
| void | setMinutes(int minutes) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.MINUTE, int minutes)に置き換えられています。 | 
| void | setMonth(int month) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.MONTH, int month)に置き換えられています。 | 
| void | setSeconds(int seconds) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.SECOND, int seconds)に置き換えられています。 | 
| void | setTime(long time) | この Dateオブジェクトを、1970年1月1日00:00:00 GMTからtimeミリ秒の時点を表すように設定します。 | 
| void | setYear(int year) | 非推奨。 
 JDK version 1.1以降は、 Calendar.set(Calendar.YEAR, year+1900)に置き換えられています。 | 
| String | toGMTString() | 非推奨。 
 JDK version 1.1以降は、GMT  TimeZoneを使用するDateFormat.format(Date date)に置き換えられています。 | 
| Instant | toInstant() | この DateオブジェクトをInstantに変換します。 | 
| String | toLocaleString() | 非推奨。 
 JDK version 1.1以降は、 DateFormat.format(Date date)に置き換えられています。 | 
| String | toString() | Dateオブジェクトを次の形式のStringに変換します。 | 
| static long | UTC(int year, int month, int date, int hrs, int min, int sec) | 非推奨。 
 JDK Version 1.1以降は、 Calendar.set(year+1900, month, date, hrs, min, sec)またはGregorianCalendar(year+1900, month, date, hrs, min, sec)に置き換えられています。UTCTimeZoneを使用し、Calendar.getTime().getTime()があとに続きます。 | 
public Date()
Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、割り当てられたときの時刻を、もっとも近いミリ秒単位で表します。public Date(long date)
Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、「元期」(すなわち1970年1月1日00:00:00 GMT)である標準時からの指定されたミリ秒数を表します。date - 1970年1月1日00:00:00 GMTからのミリ秒数。System.currentTimeMillis()@Deprecated public Date(int year, int month, int date)
Calendar.set(year+1900, month, date)またはGregorianCalendar(year+1900, month, date)に置き換えられました。 Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、ローカル時間の深夜零時を表します。これは、year、month、date引数で指定された日の始めです。year - 年から1900を引いたもの。month - 0 - 11の月。date - 1 - 31の月の日。Calendar@Deprecated public Date(int year, int month, int date, int hrs, int min)
Calendar.set(year+1900, month, date, hrs, min)またはGregorianCalendar(year+1900, month, date, hrs, min)に置き換えられました。 Dateオブジェクトを割り当て、それを初期化します。これによって、オブジェクトはyear、month、date、hrs、およびmin引数で指定された分の開始時点のインスタントをローカル・タイムゾーンで表します。year - 年から1900を引いたもの。month - 0 - 11の月。date - 1 - 31の月の日。hrs - 0 - 23の時。min - 0 - 59の分。Calendar@Deprecated public Date(int year, int month, int date, int hrs, int min, int sec)
Calendar.set(year+1900, month, date, hrs, min, sec)またはGregorianCalendar(year+1900, month, date, hrs, min, sec)に置き換えられました。 Dateオブジェクトを割り当て、それを初期化します。これによって、オブジェクトはyear、month、date、hrs、min、およびsec引数で指定された秒の開始時点のインスタントをローカル・タイムゾーンで表します。year - 年から1900を引いたもの。month - 0 - 11の月。date - 1 - 31の月の日。hrs - 0 - 23の時。min - 0 - 59の分。sec - 0 - 59の秒。Calendar@Deprecated public Date(String s)
DateFormat.parse(String s)に置き換えられています。 Dateオブジェクトを割り当て、初期化します。これによって、このオブジェクトは、文字列sに指定された日付と時刻に初期化されます。これは、parse(java.lang.String)メソッドで解釈されるのと同じように解釈されます。s - 日付の文字列表現。DateFormat、parse(java.lang.String)public Object clone()
@Deprecated public static long UTC(int year, int month, int date, int hrs, int min, int sec)
Calendar.set(year+1900, month, date, hrs, min, sec)またはGregorianCalendar(year+1900, month, date, hrs, min, sec)に置き換えられています。UTC TimeZoneを使用し、Calendar.getTime().getTime()があとに続きます。 year - 年から1900を引いたもの。month - 0 - 11の月。date - 1 - 31の月の日。hrs - 0 - 23の時。min - 0 - 59の分。sec - 0 - 59の秒。Calendar@Deprecated public static long parse(String s)
DateFormat.parse(String s)に置き換えられています。 多くの構文が可能です。IETF標準日付構文Sat, 12 Aug 1995 13:30:00 GMTが認識されます。 さらに、米国大陸のタイムゾーン省略形も認識されますが、一般的な使用では、タイムゾーン・オフセット「Sat, 12 Aug 1995 13:30:00 GMT+0430」(グリニッジ子午線の西、4時間30分)を使用するようにしてください。 タイムゾーンを指定しないと、ローカル・タイムゾーンが使用されます。 GMTとUTCは同等とみなされます。
文字列sは、対象のデータを探しながら、左から右に向かって処理されます。 sの中でASCIIカッコ文字(および)で囲まれているものは無視されます。 カッコは入れ子にできます。 それ以外の場合、s内で許可される文字は次のASCII文字だけです。
および空白文字。abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789,+-:/
10進数の連続は10進数として処理されます。
SimpleDateFormatで使用される100より少ない年の解釈とは少し異なります。 
 文字の連続は単語とみなされ、以下のように処理されます。
文字列sの全体が走査されると、それは2つの方法のどちらかで時間に変換されます。 タイムゾーンまたはタイムゾーン・オフセットが認識されている場合、年、月、日、時、分、および秒はUTCで解釈され、タイムゾーン・オフセットが適用されます。 そうでない場合、年、月、日、時、分、および秒はローカル・タイムゾーンで解釈されます。
s - 日付として解析される文字列。DateFormat@Deprecated public int getYear()
Calendar.get(Calendar.YEAR) - 1900に置き換えられています。 Dateオブジェクトで表されるインスタントを含むかまたはそのインスタントで始まる年から1900を引いた結果の値を、ローカル・タイムゾーンで解釈して返します。Calendar@Deprecated public void setYear(int year)
Calendar.set(Calendar.YEAR, year+1900)に置き換えられています。 Dateオブジェクトは、指定された年のある時点を、以前と同じように月、日、時、分、および秒を使用してローカル・タイムゾーンで表すように変更されます。 たとえば日付が2月29日だった場合、年はうるう年ではないと設定され、新しい日付は3月1日として処理されます。 year - 年の値。Calendar@Deprecated public int getMonth()
Calendar.get(Calendar.MONTH)に置き換えられています。 0と11の間であり、値0は1月を表します。 Calendar@Deprecated public void setMonth(int month)
Calendar.set(Calendar.MONTH, int month)に置き換えられています。 month - 0 - 11の月の値。Calendar@Deprecated public int getDate()
Calendar.get(Calendar.DAY_OF_MONTH)に置き換えられています。 1と31の間になります。 Calendar@Deprecated public void setDate(int date)
Calendar.set(Calendar.DAY_OF_MONTH, int date)に置き換えられています。 date - 1 - 31の月の日の値。Calendar@Deprecated public int getDay()
Calendar.get(Calendar.DAY_OF_WEEK)に置き換えられています。 Calendar@Deprecated public int getHours()
Calendar.get(Calendar.HOUR_OF_DAY)に置き換えられています。 Calendar@Deprecated public void setHours(int hours)
Calendar.set(Calendar.HOUR_OF_DAY, int hours)に置き換えられています。 hours - 時間の値。Calendar@Deprecated public int getMinutes()
Calendar.get(Calendar.MINUTE)に置き換えられています。 0 - 59です。 Calendar@Deprecated public void setMinutes(int minutes)
Calendar.set(Calendar.MINUTE, int minutes)に置き換えられています。 minutes - 分の値。Calendar@Deprecated public int getSeconds()
Calendar.get(Calendar.SECOND)に置き換えられています。 0 - 61です。 値60および61は、うるう年を考慮するJava仮想マシンだけで発生します。 Calendar@Deprecated public void setSeconds(int seconds)
Calendar.set(Calendar.SECOND, int seconds)に置き換えられています。 seconds - 秒の値。Calendarpublic long getTime()
public void setTime(long time)
Dateオブジェクトを、1970年1月1日00:00:00 GMTからtimeミリ秒の時点を表すように設定します。time - ミリ秒数。public boolean before(Date when)
when - 日付。true、そうでない場合はfalse。NullPointerException - whenがnullの場合。public boolean after(Date when)
when - 日付。true、そうでない場合はfalse。NullPointerException - whenがnullの場合。public boolean equals(Object obj)
nullではなく、かつ、このオブジェクトとミリ秒まで同じ時点を表すDateオブジェクトであれば、trueを返します。 
 
 したがって、2つのDateオブジェクトは、getTimeメソッドが両方に対して同じlongを返す場合だけ等しいものとみなされます。
public int compareTo(Date anotherDate)
compareTo、インタフェースComparable<Date>anotherDate - 比較対象のDate。0。このDateが引数Dateより前の場合は0より小さい値。このDateが引数Dateより後の場合は0より大きい値。NullPointerException - anotherDateがnullの場合。public int hashCode()
getTime()メソッドによって返されるプリミティブlong値の上位半分と下位半分の排他的論理和です。 すなわち、ハッシュ・コードは次の式の値です。 
 (int)(this.getTime()^(this.getTime() >>> 32))
hashCode、クラスObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public String toString()
Dateオブジェクトを次の形式のStringに変換します。
 以下にそれぞれの意味を示します。dow mon dd hh:mm:ss zzz yyyy
toString、クラスObjecttoLocaleString(), toGMTString()@Deprecated public String toLocaleString()
DateFormat.format(Date date)に置き換えられています。 strftime()機能によってサポートされる「%c」フォーマットの場合と同様です。 DateFormat, toString(), toGMTString()@Deprecated public String toGMTString()
TimeZoneを使用するDateFormat.format(Date date)に置き換えられています。 以下にそれぞれの意味を示します。d mon yyyy hh:mm:ss GMT
結果はローカル・タイムゾーンに依存しません。
DateFormat, toString(), toLocaleString()@Deprecated public int getTimezoneOffset()
-(Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET))/(60 * 1000)に置き換えられています。 Dateオブジェクトで表される時間に適切な、UTCを基準にしたローカル・タイムゾーンのオフセットを分で返します。
 たとえば、Massachusettsでの、グリニッジの西5時間ゾーン:
1996年2月14日のため、標準時(東部標準時)が使用されています。オフセットは、UTCから5時間です。new Date(96, 1, 14).getTimezoneOffset() returns 300
1996年6月1日のため、夏時間(東部夏時間)が使用されています。オフセットは、UTCから4時間だけです。new Date(96, 5, 1).getTimezoneOffset() returns 240
このメソッドは計算したかのように同じ結果を生成します。
 (this.getTime() - UTC(this.getYear(),
                       this.getMonth(),
                       this.getDate(),
                       this.getHours(),
                       this.getMinutes(),
                       this.getSeconds())) / (60 * 1000)
 Calendar.ZONE_OFFSET, Calendar.DST_OFFSET, TimeZone.getDefault()public static Date from(Instant instant)
InstantオブジェクトからDateのインスタンスを取得します。
 
 Instantはナノ秒の精度を使用するのに対し、Dateはミリ秒の精度を使用します。 この変換では、ナノ秒の量が100万で整数除算されたかのように、余分な精度情報が切り捨てられます。 
 
 Instantは、Dateに比べ、時系列上の将来および過去のより詳細な時点を格納できます。 このシナリオでは、このメソッドは例外をスローします。 
instant - 変換対象のインスタントDateNullPointerException - instantがnullである場合。IllegalArgumentException - そのインスタントがDateとして表すには大きすぎる場合public Instant toInstant()
DateオブジェクトをInstantに変換します。
 
 この変換では、時系列上でこのDateと同じ時点を表すInstantを作成します。
Dateオブジェクトと同じインスタントを表すインスタント バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。