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) に置き換えられています。UTC TimeZone を使用し、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
- 秒の値。Calendar
public 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
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString()
Date
オブジェクトを次の形式のString
に変換します。
以下にそれぞれの意味を示します。dow mon dd hh:mm:ss zzz yyyy
toString
、クラス: Object
toLocaleString()
, 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を基準にしたローカル・タイムゾーンのオフセットを分で返します。
次に、グリニッジの西5時間ゾーンのMassachusettsの例を示します。
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
- 変換対象のインスタントDate
NullPointerException
- instant
がnullである場合。IllegalArgumentException
- そのインスタントがDate
として表すには大きすぎる場合public Instant toInstant()
Date
オブジェクトをInstant
に変換します。
この変換では、時系列上でこのDate
と同じ時点を表すInstant
を作成します。
Date
オブジェクトと同じインスタントを表すインスタント バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.