public final class DateTimeFormatter extends Object
このクラスは、出力と解析を行うためのアプリケーションのメイン・エントリ・ポイントとなり、DateTimeFormatter
の共通の実装を提供します。
ISO_LOCAL_DATE
などuuuu-MMM-dd
などlong
やmedium
など
より複雑なフォーマッタはDateTimeFormatterBuilder
によって提供されます。
主要な日付/時間クラスには2つのメソッドが用意されています。1つは書式設定用のformat(DateTimeFormatter formatter)
、もう1つは解析用のparse(CharSequence text, DateTimeFormatter formatter)
です。
たとえば、
String text = date.toString(formatter); LocalDate date = LocalDate.parse(text, formatter);
このフォーマットに加え、必要なLocale、Chronology、ZoneId、およびDecimalStyleを持つフォーマッタを作成できます。
withLocale
メソッドは、ロケールをオーバーライドする新しいフォーマッタを返します。ロケールは、書式設定と解析のいくつかの側面に影響します。たとえば、ofLocalizedDate
はロケール固有の日付フォーマットを使用するフォーマッタを提供します。
withChronology
メソッドは、暦をオーバーライドする新しいフォーマッタを返します。オーバーライドされた場合、日付/時間の値は書式設定の前にその暦に変換されます。解析時には、日付/時間の値はその暦に変換されてから返されます。
withZone
メソッドは、ゾーンをオーバーライドする新しいフォーマッタを返します。オーバーライドされた場合、日付/時間の値は、要求されたZoneIdを持つZonedDateTimeに変換されてから書式設定されます。解析時には、ZoneIdが適用された後で値が返されます。
withDecimalStyle
メソッドは、DecimalStyle
をオーバーライドする新しいフォーマッタを返します。DecimalStyleの記号は、書式設定と解析に使用されます。
一部のアプリケーションでは、古いjava.text.Format
クラスを書式設定に使用しなければならない場合があります。toFormat()
メソッドは、java.text.Format
の実装を返します。
フォーマッタ | 説明 | 例 |
---|---|---|
ofLocalizedDate(dateStyle) |
ロケールの日付スタイルを持つフォーマッタ | '2011-12-03' |
ofLocalizedTime(timeStyle) |
ロケールの時間スタイルを持つフォーマッタ | '10:15:30' |
ofLocalizedDateTime(dateTimeStyle) |
ロケールの日付と時間のスタイルを持つフォーマッタ | '3 Jun 2008 11:05:30' |
ofLocalizedDateTime(dateStyle,timeStyle)
|
ロケールの日付スタイルおよび時間スタイルを持つフォーマッタ | '3 Jun 2008 11:05' |
BASIC_ISO_DATE |
基本的なISO日付 | '20111203' |
ISO_LOCAL_DATE |
ISOローカル日付 | '2011-12-03' |
ISO_OFFSET_DATE |
オフセット付きのISO日付 | '2011-12-03+01:00' |
ISO_DATE |
オフセット付きまたはオフセットなしのISO日付 | '2011-12-03+01:00'; '2011-12-03' |
ISO_LOCAL_TIME |
オフセットなしの時間 | '10:15:30' |
ISO_OFFSET_TIME |
オフセット付きの時間 | '10:15:30+01:00' |
ISO_TIME |
オフセット付きまたはオフセットなしの時間 | '10:15:30+01:00'; '10:15:30' |
ISO_LOCAL_DATE_TIME |
ISOローカル日付および時間 | '2011-12-03T10:15:30' |
ISO_OFFSET_DATE_TIME |
オフセット付きの日付時間 | 2011-12-03T10:15:30+01:00' |
ISO_ZONED_DATE_TIME |
ゾーン指定の日付時間 | '2011-12-03T10:15:30+01:00[Europe/Paris]' |
ISO_DATE_TIME |
ゾーンID付きの日付および時間 | '2011-12-03T10:15:30+01:00[Europe/Paris]' |
ISO_ORDINAL_DATE |
年および年の日付 | '2012-337' |
ISO_WEEK_DATE |
年および週 | 2012-W48-6' |
ISO_INSTANT |
インスタントの日付および時間 | '2011-12-03T10:15:30Z' |
RFC_1123_DATE_TIME |
RFC 1123 / RFC 822 | 'Tue, 3 Jun 2008 11:05:30 GMT' |
ofPattern(String)
メソッドおよびofPattern(String, Locale)
メソッドを使用してFormatterを作成する場合に使用されます。たとえば、"d MMM uuuu"
を使用すると、2011-12-03は「3 Dec 2011」と書式設定されます。パターンから作成されたフォーマッタは、必要に応じて何度でも使用でき、不変でスレッドセーフです。
たとえば、
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd"); String text = date.toString(formatter); LocalDate date = LocalDate.parse(text, formatter);
'A'から'Z'および'a'から'z'のすべての文字は、パターン文字として予約されています。次のパターン文字が定義されています。
Symbol Meaning Presentation Examples ------ ------- ------------ ------- G era text AD; Anno Domini; A u year year 2004; 04 y year-of-era year 2004; 04 D day-of-year number 189 M/L month-of-year number/text 7; 07; Jul; July; J d day-of-month number 10 Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter Y week-based-year year 1996; 96 w week-of-week-based-year number 27 W week-of-month number 4 E day-of-week text Tue; Tuesday; T e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T F week-of-month number 3 a am-pm-of-day text PM h clock-hour-of-am-pm (1-12) number 12 K hour-of-am-pm (0-11) number 0 k clock-hour-of-am-pm (1-24) number 0 H hour-of-day (0-23) number 0 m minute-of-hour number 30 s second-of-minute number 55 S fraction-of-second fraction 978 A milli-of-day number 1234 n nano-of-second number 987654321 N nano-of-day number 1234000000 V time-zone ID zone-id America/Los_Angeles; Z; -08:30 z time-zone name zone-name Pacific Standard Time; PST O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00; X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15; x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15; Z zone-offset offset-Z +0000; -0800; -08:00; p pad next pad modifier 1 ' escape for text delimiter '' single quote literal ' [ optional section start ] optional section end # reserved for future use { reserved for future use } reserved for future use
パターン文字の数によってフォーマットが決まります。
テキスト: テキスト・スタイルは、使用されるパターン文字の数に基づいて決まります。パターン文字が4つ未満の場合は、短縮形式
が使用されます。パターン文字がちょうど4つの場合は、フル形式
が使用されます。パターン文字がちょうど5つの場合は、縮小形式
が使用されます。パターン文字'L'、'c'、および'q'は、スタンドアロン形式のテキスト・スタイルを指定します。
数値: 文字数が1の場合は、パディングを使用せず最小の桁数で値が出力されます。それ以外の場合は、文字数が出力フィールドの幅として使用され、値は必要に応じてゼロでパディングされます。次のパターン文字には、文字数に制約があります。文字'c'および'F'は、1つだけ指定できます。文字'd'、'H'、'h'、'K'、'k'、'm'、および's'は、2つまで指定できます。文字'D'は、3つまで指定できます。
数値/テキスト: パターン文字の数が3以上の場合は、上記の「テキスト」のルールが使用されます。それ以外の場合は、上記の「数値」のルールが使用されます。
小数: 秒の小数部としてナノ秒フィールドを出力します。ナノ秒の値は9桁なので、パターン文字の数は1から9までです。9未満の場合、ナノ秒の値は切り捨てられ、上位の桁だけが出力されます。厳密モードの解析では、解析される桁数はパターン文字の数と一致する必要があります。非厳密モードの解析では、解析される桁数はパターン文字の数以上で、9桁以下でなければなりません。
年: パターン文字の数によって最小のフィールド幅が決まり、その幅に満たない場合はパディングが使用されます。文字数が2の場合は、2桁の縮小
形式が使用されます。出力の場合は、右2桁が出力されます。解析の場合は、ベース値として2000が使用されるため、年の範囲は2000から2099までになります。文字数が4未満(ただし2以外)の場合は、SignStyle.NORMAL
のように、負の年に対してのみ符号が出力されます。それ以外の場合は、SignStyle.EXCEEDS_PAD
のように、パディング幅を超える場合に符号が出力されます。
ゾーンID: 「Europe/Paris」などのタイムゾーンIDを出力します。文字数が2の場合は、タイムゾーンIDが出力されます。それ以外の文字数では、IllegalArgumentException
がスローされます。
ゾーン名: タイムゾーンIDの表示名を出力します。文字数が1、2、または3の場合は、短い名前が出力されます。文字数が4の場合は、完全な名前が出力されます。5文字以上の場合は、IllegalArgumentException
がスローされます。
オフセットXおよびx: パターン文字の数に基づいてオフセットを書式設定します。1文字の場合、分がゼロのときは時だけが出力されて「+01」のようになり、分がゼロでないときは分も出力されて「+0130」のようになります。2文字の場合は、時と分がコロンなしで出力され、「+0130」のようになります。3文字の場合は、時と分がコロン付きで出力され、「+01:30」のようになります。4文字の場合は、時と分、およびオプションの秒がコロンなしで出力され、「+013015」のようになります。5文字の場合は、時と分、およびオプションの秒がコロン付きで出力され、「+01:30:15」のようになります。6文字以上の場合は、IllegalArgumentException
がスローされます。出力されるオフセットがゼロになるときは、パターン文字'X' (大文字)の場合は「Z」が出力され、パターン文字'x' (小文字)の場合は「+00」、「+0000」、または「+00:00」が出力されます。
オフセットO: パターン文字の数に基づいて、ローカライズされたオフセットを書式設定します。1文字の場合は、ローカライズされたオフセットの短縮形式が出力されます。これはローカライズされたオフセットのテキスト(「GMT」など)、時(先頭のゼロを含まない)、オプションの2桁の分と秒(ゼロでない場合)、およびコロンからなり、たとえば「GMT+8」となります。4文字の場合は、フル形式が出力されます。これはローカライズされたオフセットのテキスト(「GMT」など)、2桁の時と分のフィールド、オプションの秒フィールド(ゼロでない場合)、およびコロンからなり、たとえば「GMT+08:00」となります。それ以外の文字数では、IllegalArgumentException
がスローされます。
オフセットZ: パターン文字の数に基づいてオフセットを書式設定します。1、2、または3文字の場合は、時と分がコロンなしで出力され、「+0130」のようになります。オフセットがゼロの場合、出力は「+0000」になります。4文字の場合は、ローカライズされたオフセットのフル形式が出力されます。これはオフセットOの4文字と等価です。オフセットがゼロのときは、対応するローカライズされたオフセットのテキストが出力されます。5文字の場合は、時と分、およびオプションの秒(ゼロでない場合)がコロン付きで出力されます。オフセットがゼロの場合は「Z」が出力されます。6文字以上の場合は、IllegalArgumentException
がスローされます。
オプションのセクション: オプションのセクションのマーカーは、DateTimeFormatterBuilder.optionalStart()
およびDateTimeFormatterBuilder.optionalEnd()
の呼出しとまったく同様に機能します。
パディング修飾子: 直後のパターンがスペースでパディングされるように変更します。パディング幅は、パターン文字の数によって決まります。これは、DateTimeFormatterBuilder.padNext(int)
を呼び出すのと同じです。
たとえば「ppH」を使用すると、時は、幅が2になるまで左にスペースが追加されて出力されます。
認識されない文字はエラーです。英文字でない文字は、'['、']'、'{'、'}'、'#'、および一重引用符を除き、直接出力されます。ただし、将来の変更によってアプリケーションが破壊されないようにするには、直接出力したいすべての文字を一重引用符で囲むことをお薦めします。
Map
、ZoneId
、およびChronology
が生成されます。次に、さまざまなフィールドの検証、結合、簡素化を行ってより有用なフィールドを得ることにより、解析されたデータが解決されます。
このクラスには5つの解析メソッドが用意されています。これらのうち4つは、解析フェーズと解決フェーズの両方を実行します。5番目のメソッドparseUnresolved(CharSequence, ParsePosition)
は最初のフェーズだけを実行し、その結果は未解決のままになります。したがって、これは本質的に低レベルの処理です。
解決フェーズは、このクラスに設定される2つのパラメータによって制御されます。
ResolverStyle
は、厳密、スマート、および非厳密という異なる3つの方法を提供する列挙です。スマート・オプションがデフォルトです。withResolverStyle(ResolverStyle)
を使用して設定できます。
withResolverFields(TemporalField...)
パラメータを使用すると、解決するフィールドのセットをフィルタリングしてから解決を開始できます。たとえば、フォーマッタが年、月、「月の日」、および「年の日」を解析した場合、日付を解決する方法には、(年+月+「月の日」)と(年+「年の日」)の2つがあります。リゾルバ・フィールドを使用して、2つの方法のいずれかを選択できます。リゾルバ・フィールドが設定されていない場合、両方の方法の結果は同じ日付になるはずです。
個別のフィールドを解決して完全な日付と時間を構築することは、多数のクラスに動作が分散された複雑な処理です。次の手順に従って行われます。
IsoChronology
になります。
ChronoField
日付フィールドが解決されます。これはChronology.resolveDate(Map, ResolverStyle)
を使用して実現されます。フィールド解決に関するドキュメントは、Chronology
の実装内にあります。
ChronoField
時間フィールドが解決されます。このドキュメントはChronoField
上にあり、すべての時刻系に対して同じになります。
ChronoField
ではない任意のフィールドが処理されます。これはTemporalField.resolve(Map, TemporalAccessor, ResolverStyle)
を使用して実現されます。フィールド解決に関するドキュメントは、TemporalField
の実装内にあります。
ChronoField
日付フィールドおよび時間フィールドが再度解決されます。これにより、ステップ4のフィールドからChronoField
値を生成し、それらを処理して日付と時間にすることができます。
LocalTime
が構築されます。このとき、分、秒、および秒の小数部のデフォルト値が使用されます。
修飾子と型 | フィールドと説明 |
---|---|
static DateTimeFormatter |
BASIC_ISO_DATE
日付をオフセットなしで書式設定または解析するISO日付フォーマッタ(「20111203」など)。
|
static DateTimeFormatter |
ISO_DATE
使用可能な場合はオフセット付きで日付を書式設定または解析するISO日付フォーマッタ(「2011-12-03」、「2011-12-03+01:00」など)。
|
static DateTimeFormatter |
ISO_DATE_TIME
使用可能な場合はオフセットおよびゾーン付きで日付/時間を書式設定または解析する、ISOに似た日付/時間フォーマッタ(「2011-12-03T10:15:30」、「2011-12-03T10:15:30+01:00」、「2011-12-03T10:15:30+01:00[Europe/Paris]」など)。
|
static DateTimeFormatter |
ISO_INSTANT
UTCのインスタントを書式設定または解析するISOインスタント・フォーマッタ(「2011-12-03T10:15:30Z」など)。
|
static DateTimeFormatter |
ISO_LOCAL_DATE
日付をオフセットなしで書式設定または解析するISO日付フォーマッタ(「2011-12-03」など)。
|
static DateTimeFormatter |
ISO_LOCAL_DATE_TIME
日付/時間をオフセットなしで書式設定または解析するISO日付/時間フォーマッタ(「2011-12-03T10:15:30」など)。
|
static DateTimeFormatter |
ISO_LOCAL_TIME
時間をオフセットなしで書式設定または解析するISO時間フォーマッタ(「10:15」、「10:15:30」など)。
|
static DateTimeFormatter |
ISO_OFFSET_DATE
日付をオフセット付きで書式設定または解析するISO日付フォーマッタ(「2011-12-03+01:00」など)。
|
static DateTimeFormatter |
ISO_OFFSET_DATE_TIME
日付/時間をオフセット付きで書式設定または解析するISO日付/時間フォーマッタ(「2011-12-03T10:15:30+01:00」など)。
|
static DateTimeFormatter |
ISO_OFFSET_TIME
時間をオフセット付きで書式設定または解析するISO時間フォーマッタ(「10:15+01:00」、「10:15:30+01:00」など)。
|
static DateTimeFormatter |
ISO_ORDINAL_DATE
序数形式の日付をオフセットなしで書式設定または解析するISO日付フォーマッタ(「2012-337」など)。
|
static DateTimeFormatter |
ISO_TIME
使用可能な場合はオフセット付きで時間を書式設定または解析するISO時間フォーマッタ(「10:15」、「10:15:30」、「10:15:30+01:00」など)。
|
static DateTimeFormatter |
ISO_WEEK_DATE
週ベースの日付をオフセットなしで書式設定または解析するISO日付フォーマッタ(「2012-W48-6」など)。
|
static DateTimeFormatter |
ISO_ZONED_DATE_TIME
オフセットおよびゾーン付きで日付/時間を書式設定または解析する、ISOに似た日付/時間フォーマッタ(「2011-12-03T10:15:30+01:00[Europe/Paris]」など)。
|
static DateTimeFormatter |
RFC_1123_DATE_TIME
RFC-1123日付/時間フォーマッタ(「Tue, 3 Jun 2008 11:05:30 GMT」など)。
|
修飾子と型 | メソッドと説明 |
---|---|
String |
format(TemporalAccessor temporal)
このフォーマッタを使用して、日付/時間オブジェクトを書式設定します。
|
void |
formatTo(TemporalAccessor temporal, Appendable appendable)
このフォーマッタを使用して、日付/時間オブジェクトを
Appendable に書式設定します。 |
Chronology |
getChronology()
書式設定時に使用するオーバーライドする暦を取得します。
|
DecimalStyle |
getDecimalStyle()
書式設定時に使用されるDecimalStyleを取得します。
|
Locale |
getLocale()
書式設定時に使用されるロケールを取得します。
|
Set<TemporalField> |
getResolverFields()
解析時に使用するリゾルバ・フィールドを取得します。
|
ResolverStyle |
getResolverStyle()
解析時に使用するリゾルバ・スタイルを取得します。
|
ZoneId |
getZone()
書式設定時に使用されるオーバーライド・ゾーンを取得します。
|
static DateTimeFormatter |
ofLocalizedDate(FormatStyle dateStyle)
ISO暦に対するロケール固有の日付フォーマットを返します。
|
static DateTimeFormatter |
ofLocalizedDateTime(FormatStyle dateTimeStyle)
ISO暦に対するロケール固有の日付/時間フォーマッタを返します。
|
static DateTimeFormatter |
ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
ISO暦に対するロケール固有の日付と時間のフォーマットを返します。
|
static DateTimeFormatter |
ofLocalizedTime(FormatStyle timeStyle)
ISO暦に対するロケール固有の時間フォーマットを返します。
|
static DateTimeFormatter |
ofPattern(String pattern)
指定されたパターンを使用してフォーマッタを作成します。
|
static DateTimeFormatter |
ofPattern(String pattern, Locale locale)
指定されたパターンおよびロケールを使用してフォーマッタを作成します。
|
TemporalAccessor |
parse(CharSequence text)
テキストを完全に解析して、時間的オブジェクトを生成します。
|
TemporalAccessor |
parse(CharSequence text, ParsePosition position)
このフォーマッタを使用してテキストを解析し、テキスト位置に対する制御を提供します。
|
<T> T |
parse(CharSequence text, TemporalQuery<T> query)
テキストを完全に解析して、指定された型のオブジェクトを生成します。
|
TemporalAccessor |
parseBest(CharSequence text, TemporalQuery<?>... queries)
テキストを完全に解析して、指定されたいずれかのタイプのオブジェクトを生成します。
|
static TemporalQuery<Period> |
parsedExcessDays()
解析された超過日数へのアクセスを提供する問合せ。
|
static TemporalQuery<Boolean> |
parsedLeapSecond()
うるう秒を解析したかどうかへのアクセスを提供する問合せ。
|
TemporalAccessor |
parseUnresolved(CharSequence text, ParsePosition position)
このフォーマッタを使用してテキストを解析しますが、高度なユース・ケース向けに、結果を解決しません。
|
Format |
toFormat()
このフォーマッタを
java.text.Format インスタンスとして返します。 |
Format |
toFormat(TemporalQuery<?> parseQuery)
このフォーマッタを、指定された問合わせを使用して解析する
java.text.Format インスタンスとして返します。 |
String |
toString()
ベースとなるフォーマッタの説明を返します。
|
DateTimeFormatter |
withChronology(Chronology chrono)
オーバーライドされた新しい暦を使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withDecimalStyle(DecimalStyle decimalStyle)
新しいDecimalStyleを使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withLocale(Locale locale)
新しいロケールを使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withResolverFields(Set<TemporalField> resolverFields)
新しいリゾルバ・フィールドのセットを使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withResolverFields(TemporalField... resolverFields)
新しいリゾルバ・フィールドのセットを使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withResolverStyle(ResolverStyle resolverStyle)
新しいリゾルバ・スタイルを使って、このフォーマッタのコピーを返します。
|
DateTimeFormatter |
withZone(ZoneId zone)
新しいオーバーライドゾーンを使って、このフォーマッタのコピーを返します。
|
public static final DateTimeFormatter ISO_LOCAL_DATE
これは、ISO-8601拡張のローカル日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
年
を表す4つ以上の桁。0000から9999の範囲内にある年は、必ず4桁になるように前にゼロが追加されます。その範囲外の年には、先頭に正符号または負符号が追加されます。
月
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
「月の日」
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_OFFSET_DATE
これは、ISO-8601拡張のオフセット日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_DATE
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_DATE
これは、ISO-8601拡張の日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_DATE
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_LOCAL_TIME
これは、ISO-8601拡張のローカル時間フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
時
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
分
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
秒
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
ナノ秒
を表す1つから9つまでの桁。桁数は必要なだけ出力されます。
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_OFFSET_TIME
これは、ISO-8601拡張のオフセット時間フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_TIME
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_TIME
これは、ISO-8601拡張のオフセット時間フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_TIME
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_LOCAL_DATE_TIME
これは、ISO-8601拡張のオフセット日付/時間フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_DATE
ISO_LOCAL_TIME
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_OFFSET_DATE_TIME
これは、ISO-8601拡張のオフセット日付/時間フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_DATE_TIME
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_ZONED_DATE_TIME
これは、ISO-8601拡張のオフセット日付/時間フォーマットを拡張してタイムゾーンを追加するフォーマットの書式設定および解析を行える不変のフォーマッタを返します。角括弧内のセクションはISO-8601標準には含まれていません。フォーマットは次のもので構成されます。
ISO_OFFSET_DATE_TIME
ZoneOffset
である場合、書式設定は完了です。
ゾーンID
。これはISO-8601標準には含まれていません。解析では大文字と小文字が区別されます。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_DATE_TIME
これは、ISO-8601拡張のローカルまたはオフセット日付/時間フォーマット、およびタイムゾーンを指定するISO以外の拡張形式の、書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
ISO_LOCAL_DATE_TIME
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。
ZoneOffset
である場合、書式設定は完了です。
ゾーンID
。これはISO-8601標準には含まれていません。解析では大文字と小文字が区別されます。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_ORDINAL_DATE
これは、ISO-8601拡張の序数形式日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
年
を表す4つ以上の桁。0000から9999の範囲内にある年は、必ず4桁になるように前にゼロが追加されます。その範囲外の年には、先頭に正符号または負符号が追加されます。
「年の日」
を表す3桁。これは必ず3桁になるように前にゼロが追加されます。
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_WEEK_DATE
これは、ISO-8601拡張の週ベース日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
週ベースの年
を表す4つ以上の桁。0000から9999の範囲内にある年は、必ず4桁になるように前にゼロが追加されます。その範囲外の年には、先頭に正符号または負符号が追加されます。
週ベースの年の週
を表す2桁。これは必ず3桁になるように前にゼロが追加されます。
曜日
を表す1桁。値の範囲は月曜(1)から日曜(7)までです。
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter ISO_INSTANT
これは、ISO-8601インスタント・フォーマットの書式設定および解析を行える不変のフォーマッタを返します。書式設定時に、秒は常に出力されます。ナノ秒は、必要に応じて0、3、6、または9桁で出力されます。解析時、時間には少なくとも秒のフィールドまでが必要です。0から9までの小数点以下の秒が解析されます。ローカライズされた10進スタイルは使用されません。
これは、人間が読める形式のInstant
を使用可能にするための特殊なフォーマッタです。Instant
クラスは、時間のある1点を表すためだけに設計されており、固定の元期1970-01-01Zからのナノ秒単位の値を内部に格納しています。したがって、Instant
を日付や時間として書式設定するには、なんらかの形式のタイムゾーンを指定する必要があります。このフォーマッタでは、ZoneOffset.UTC
を使用して適切な変換を提供することにより、Instant
を書式設定できます。
フォーマットは次のもので構成されます。
UTC
オフセットを使用してChronoField.INSTANT_SECONDS
およびChronoField.NANO_OF_SECOND
からインスタントを変換するISO_OFFSET_DATE_TIME
。解析では大文字と小文字は区別されません。
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter BASIC_ISO_DATE
これは、ISO-8601基本のローカル日付フォーマットの書式設定および解析を行える不変のフォーマッタを返します。フォーマットは次のもので構成されます。
年
を表す4桁。0000から9999の範囲内にある年だけがサポートされます。
月
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
「月の日」
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
オフセットID
。オフセットに秒が含まれている場合、ISO-8601標準には含まれていませんが秒も処理されます。解析では大文字と小文字は区別されません。
このフォーマッタにはオプション要素があるため、parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
を使用して解析する必要がある場合があります。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、STRICT
リゾルバ・スタイルを使用します。
public static final DateTimeFormatter RFC_1123_DATE_TIME
これは、ほとんどのRFC-1123フォーマットの書式設定および解析を行える不変のフォーマッタを返します。RFC-1123は、年を2桁から4桁に変更するRFC-822の更新です。この実装には4桁の年が必要です。また、この実装では「GMT」とオフセット量だけが処理され、北米のゾーン名やミリタリー・ゾーン名は処理されません。
フォーマットは次のもので構成されます。
曜日
を英語で表す3文字。
「月の日」
を表す1桁または2桁。
月
を英語で表す3文字。
年
を表す4桁。0000から9999の範囲内にある年だけがサポートされます。
時
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
分
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
秒
を表す2桁。これは必ず2桁になるように前にゼロが追加されます。
オフセットID
。オフセットがゼロの場合は「GMT」が使用されます。北米のゾーン名とミリタリー・ゾーン名は処理されません。
解析では大文字と小文字は区別されません。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、SMART
リゾルバ・スタイルを使用します。
public static DateTimeFormatter ofPattern(String pattern)
このメソッドは、クラスのドキュメントに説明されている単純な文字と記号のパターンに基づくフォーマッタを作成します。たとえば、d MMM uuuu
を使用すると、2011-12-03は「3 Dec 2011」と書式設定されます。
フォーマッタはデフォルトのFORMATロケール
を使用します。これを変更するには、返されたフォーマッタに対してwithLocale(Locale)
を使用するか、このメソッドのバリアントであるofPattern(String, Locale)
を使用します。
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。SMART
リゾルバ・スタイルを使用します。
pattern
- 使用するパターン。null以外IllegalArgumentException
- パターンが無効な場合DateTimeFormatterBuilder.appendPattern(String)
public static DateTimeFormatter ofPattern(String pattern, Locale locale)
このメソッドは、クラスのドキュメントに説明されている単純な文字と記号のパターンに基づくフォーマッタを作成します。たとえば、d MMM uuuu
を使用すると、2011-12-03は「3 Dec 2011」と書式設定されます。
フォーマッタは指定されたロケールを使用します。これを変更するには、返されたフォーマッタに対してwithLocale(Locale)
を使用します
返されるフォーマッタは、オーバーライドする暦やゾーンを持ちません。SMART
リゾルバ・スタイルを使用します。
pattern
- 使用するパターン。null以外locale
- 使用するロケール。null以外IllegalArgumentException
- パターンが無効な場合DateTimeFormatterBuilder.appendPattern(String)
public static DateTimeFormatter ofLocalizedDate(FormatStyle dateStyle)
これは、日付の書式設定または解析を行うフォーマッタを返します。使用される正確なフォーマット・パターンはロケールによって異なります。
ロケールはフォーマッタから判定されます。直接このメソッドから返されたフォーマッタは、デフォルトのFORMATロケール
を使用します。このメソッドの結果に対してwithLocale(Locale)
を使用することにより、ロケールを制御できます。
ローカライズされたパターンの検索は遅延的に行われます。このDateTimeFormatter
は、要求されたスタイルとロケールを保持し、要求されたパターンをオン・デマンドで検索します。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、SMART
リゾルバ・スタイルを使用します。
dateStyle
- 取得するフォーマッタ・スタイル。null以外public static DateTimeFormatter ofLocalizedTime(FormatStyle timeStyle)
これは、時間の書式設定または解析を行うフォーマッタを返します。使用される正確なフォーマット・パターンはロケールによって異なります。
ロケールはフォーマッタから判定されます。直接このメソッドから返されたフォーマッタは、デフォルトのFORMATロケール
を使用します。このメソッドの結果に対してwithLocale(Locale)
を使用することにより、ロケールを制御できます。
ローカライズされたパターンの検索は遅延的に行われます。このDateTimeFormatter
は、要求されたスタイルとロケールを保持し、要求されたパターンをオン・デマンドで検索します。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、SMART
リゾルバ・スタイルを使用します。
timeStyle
- 取得するフォーマッタ・スタイル。null以外public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateTimeStyle)
これは、日付/時間の書式設定または解析を行うフォーマッタを返します。使用される正確なフォーマット・パターンはロケールによって異なります。
ロケールはフォーマッタから判定されます。直接このメソッドから返されたフォーマッタは、デフォルトのFORMATロケール
を使用します。このメソッドの結果に対してwithLocale(Locale)
を使用することにより、ロケールを制御できます。
ローカライズされたパターンの検索は遅延的に行われます。このDateTimeFormatter
は、要求されたスタイルとロケールを保持し、要求されたパターンをオン・デマンドで検索します。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、SMART
リゾルバ・スタイルを使用します。
dateTimeStyle
- 取得するフォーマッタ・スタイル。null以外public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
これは、日付/時間の書式設定または解析を行うフォーマッタを返します。使用される正確なフォーマット・パターンはロケールによって異なります。
ロケールはフォーマッタから判定されます。直接このメソッドから返されたフォーマッタは、デフォルトのFORMATロケール
を使用します。このメソッドの結果に対してwithLocale(Locale)
を使用することにより、ロケールを制御できます。
ローカライズされたパターンの検索は遅延的に行われます。このDateTimeFormatter
は、要求されたスタイルとロケールを保持し、要求されたパターンをオン・デマンドで検索します。
他の暦体系の日付が正しく変換されるようにするために、返されるフォーマッタにはISO暦が設定されます。オーバーライド・ゾーンを持たず、SMART
リゾルバ・スタイルを使用します。
dateStyle
- 取得する日付フォーマッタ・スタイル。null以外timeStyle
- 取得する時間フォーマッタ・スタイル。null以外public static final TemporalQuery<Period> parsedExcessDays()
これは、解析からの追加情報へのアクセスを提供する単体問合わせを返します。問合わせは常にnull以外の期間を返し、nullの代わりにゼロの期間を返します。
この問合わせがゼロ以外の期間を返す状況は2つあります。
ResolverStyle
がLENIENT
の場合、日付を含まない時間が解析されると、完全な解析結果はLocalTime
と超過Period
(日数)から構成されます。
ResolverStyle
がSMART
の場合、日付を含まない時間が解析され、その時間が24:00:00であるとき、完全な解析結果はLocalTime
00:00:00と超過Period
1日から構成されます。
どちらの場合も、完全なChronoLocalDateTime
またはInstant
が解析されると、日付部分に超過日数が加算されます。結果として、この問合わせはゼロの期間を返します。
SMART
動作では、「1日の終わり」としてよく使用される値24:00が処理されます。LENIENT
モードで処理した場合も、同じ結果になります。
Text to parse Parsed object Excess days "2012-12-03T00:00" LocalDateTime.of(2012, 12, 3, 0, 0) ZERO "2012-12-03T24:00" LocalDateTime.of(2012, 12, 4, 0, 0) ZERO "00:00" LocalTime.of(0, 0) ZERO "24:00" LocalTime.of(0, 0) Period.ofDays(1)問合わせは次のように使用できます。
TemporalAccessor parsed = formatter.parse(str); LocalTime time = parsed.query(LocalTime::from); Period extraDays = parsed.query(DateTimeFormatter.parsedExcessDays());
public static final TemporalQuery<Boolean> parsedLeapSecond()
これは、解析からの追加情報へのアクセスを提供する単体問合わせを返します。問合わせは常にnull以外のブール値を返します。うるう秒が解析された場合はtrue、それ以外の場合はfalseです。
インスタントの解析では、特殊な「うるう秒」時間「23:59:60」が処理されます。うるう秒は、UTCタイムゾーンでは「23:59:60」に発生しますが、タイムゾーンによっては他のローカル時間に発生します。この潜在的なあいまいさを回避するために、うるう秒の処理はDateTimeFormatterBuilder.appendInstant()
に限定されています。このメソッドは常にUTCゾーン・オフセットでインスタントを解析するからです。
時間「23:59:60」が受け取られた場合は、秒60を59で置き換える単純な変換が適用されます。この問合わせを解析結果に対して使用すると、うるう秒の調整が行われたかどうかを判定できます。問合わせは、うるう秒を削除する調整が行われた場合は1秒の超過を返し、それ以外の場合はゼロを返します。UTC-SLSといったうるう秒の平滑化メカニズムの適用は、次のようにアプリケーションで行う必要があります。
TemporalAccessor parsed = formatter.parse(str); Instant instant = parsed.query(Instant::from); if (parsed.query(DateTimeFormatter.parsedLeapSecond())) { // validate leap-second is correct and apply correct smoothing }
public Locale getLocale()
これは、特定のローカリゼーションを必要とするフォーマッタの部分(テキストやローカライズされたパターンなど)を検索するために使用されます。
public DateTimeFormatter withLocale(Locale locale)
これは、特定のローカリゼーションを必要とするフォーマッタの部分(テキストやローカライズされたパターンなど)を検索するために使用されます。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
locale
- 新しいロケール。null以外public DecimalStyle getDecimalStyle()
public DateTimeFormatter withDecimalStyle(DecimalStyle decimalStyle)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
decimalStyle
- 新しいDecimalStyle。null以外public Chronology getChronology()
これは、日付の変換に使用されるオーバーライド暦を返します。デフォルトでは、フォーマッタはオーバーライド暦を持たないため、nullが返されます。オーバーライドの詳細については、withChronology(Chronology)
を参照してください。
public DateTimeFormatter withChronology(Chronology chrono)
これは、このフォーマッタに似た状態のフォーマッタを返します。ただし、オーバーライド暦が設定されています。デフォルトでは、フォーマッタはオーバーライド暦を持たないため、nullが返されます。
オーバーライドが追加された場合、書式設定または解析される任意の日付が影響を受けます。
書式設定時は、時間的オブジェクトに日付が含まれている場合、オーバーライド暦の日付に変換されます。時間的オブジェクトに日付が含まれているかどうかは、EPOCH_DAY
フィールドを照会することによって判定されます。時間とゾーンは、オーバーライドされないかぎり変更されません。
時間的オブジェクトに日付が含まれていないにもかかわらず、1つ以上のChronoField
日付フィールドが含まれている場合は、DateTimeException
がスローされます。その他の場合はすべて、オーバーライド暦が時間的オブジェクトに追加されます。それによって以前の暦は置き換えられますが、日付/時間は変更されません。
解析時は、異なる2つの場合を考慮する必要があります。おそらくDateTimeFormatterBuilder.appendChronologyId()
が使用されたために、暦がテキストから直接解析された場合、このオーバーライド暦は何の効果も持ちません。ゾーンが解析されなかった場合は、このオーバーライド暦を使用して、暦の日付解決ルールに従ってChronoField
値が日付に解釈されます。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
chrono
- 新しい暦。オーバーライドがない場合はnullpublic ZoneId getZone()
これは、インスタントの変換に使用されるオーバーライド・ゾーンを返します。デフォルトでは、フォーマッタはオーバーライド・ゾーンを持たないため、nullが返されます。オーバーライドの詳細については、withZone(ZoneId)
を参照してください。
public DateTimeFormatter withZone(ZoneId zone)
これは、このフォーマッタに似た状態のフォーマッタを返します。ただし、オーバーライド・ゾーンが設定されています。デフォルトでは、フォーマッタはオーバーライド・ゾーンを持たないため、nullが返されます。
オーバーライドが追加された場合、書式設定または解析される任意のインスタントが影響を受けます。
書式設定時は、時間的オブジェクトにインスタントが含まれている場合、オーバーライド・ゾーンを使用してゾーン指定の日付/時間に変換されます。時間的オブジェクトがインスタントであるかどうかは、INSTANT_SECONDS
フィールドを照会することによって判定されます。入力に暦が含まれている場合は、それがオーバーライドされないかぎり維持されます。Instant
のように、入力に暦が含まれていない場合は、ISO暦が使用されます。
時間的オブジェクトにインスタントが含まれていないにもかかわらず、オフセットが含まれている場合は、追加チェックが行われます。正規化されたオーバーライド・ゾーンが、時間的オブジェクトのオフセットとは異なるオフセットである場合、DateTimeException
がスローされます。その他の場合はすべて、オーバーライド・ゾーンが時間的オブジェクトに追加されます。それによって以前のゾーンは置き換えられますが、日付/時間は変更されません。
解析時は、異なる2つの場合を考慮する必要があります。おそらくDateTimeFormatterBuilder.appendZoneId()
が使用されたために、ゾーンがテキストから直接解析された場合、このオーバーライド・ゾーンは何の効果も持ちません。ゾーンが解析されなかった場合、このオーバーライド・ゾーンは解析結果に含められ、インスタントおよび日付/時間の構築に使用されます。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
zone
- 新しいオーバーライド・ゾーン。オーバーライドがない場合はnullpublic ResolverStyle getResolverStyle()
これは、フィールドを日付と時間に解決する解析の第2フェーズで使用されるリゾルバ・スタイルを返します。デフォルトでは、フォーマッタはSMART
リゾルバ・スタイルを持ちます。詳細は、withResolverStyle(ResolverStyle)
を参照してください。
public DateTimeFormatter withResolverStyle(ResolverStyle resolverStyle)
これは、このフォーマッタに似た状態のフォーマッタを返します。ただし、リゾルバ・スタイルが設定されています。デフォルトでは、フォーマッタはSMART
リゾルバ・スタイルを持ちます。
リゾルバ・スタイルの変更が効果を持つのは、解析時のみです。テキスト文字列の解析は2段階で行われます。フェーズ1は、ビルダーに追加されたフィールドに従って行われる基本的なテキスト解析です。フェーズ2では、解析されたフィールドと値のペアが、日付または時間オブジェクト、あるいはその両方に解決されます。リゾルバ・スタイルは、フェーズ2 (解決)をどのように行うかを制御するために使用されます。使用可能なオプションの詳細については、ResolverStyle
を参照してください。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
resolverStyle
- 新しいリゾルバ・スタイル。null以外public Set<TemporalField> getResolverFields()
これは、フィールドを日付と時間に解決する解析の第2フェーズで使用されるリゾルバ・フィールドを返します。デフォルトでは、フォーマッタはリゾルバ・フィールドを持たないため、nullが返されます。詳細は、withResolverFields(Set)
を参照してください。
public DateTimeFormatter withResolverFields(TemporalField... resolverFields)
これは、このフォーマッタに似た状態のフォーマッタを返します。ただし、リゾルバ・フィールドが設定されています。デフォルトでは、フォーマッタはリゾルバ・フィールドを持ちません。
リゾルバ・フィールドの変更が効果を持つのは、解析時のみです。テキスト文字列の解析は2段階で行われます。フェーズ1は、ビルダーに追加されたフィールドに従って行われる基本的なテキスト解析です。フェーズ2では、解析されたフィールドと値のペアが、日付または時間オブジェクト、あるいはその両方に解決されます。リゾルバ・フィールドは、フェーズ1と2の間でフィールドと値のペアをフィルタリングするために使用されます。
日付または時間の解決方法を2つ以上から選択する場合に使用できます。たとえば、フォーマッタが年、月、「月の日」、および「年の日」から構成されている場合、日付を解決する方法は2つあります。引数YEAR
およびDAY_OF_YEAR
を指定してこのメソッドを呼び出すと、日付は必ず年と「年の日」を使用して解決されます。これは実質的に、解決フェーズで月と「月の日」は無視されることを意味します。
同様に、このメソッドを使用すると、それ以外の場合には照合される2次的なフィールドを無視することができます。たとえば、フォーマッタが年、月、「月の日」、および曜日から構成されている場合、日付を解決する方法は1つだけですが、解析された曜日の値が解決された日付と照合されます。引数YEAR
、MONTH_OF_YEAR
、およびDAY_OF_MONTH
を指定してこのメソッドを呼び出すと、日付は必ず正しく解決されます。ただし、曜日の照合は行われません。
実装の観点からは、このメソッドは次のように動作します。解析フェーズの結果は、フィールドから値へのマップとみなすことができます。このメソッドは、フェーズ1と2の間でそのマップのフィルタリングを発生させて、このメソッドの引数として指定されたフィールド以外のフィールドをすべて削除します。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
resolverFields
- リゾルバ・フィールドの新しいセット。フィールドがない場合はnullpublic DateTimeFormatter withResolverFields(Set<TemporalField> resolverFields)
これは、このフォーマッタに似た状態のフォーマッタを返します。ただし、リゾルバ・フィールドが設定されています。デフォルトでは、フォーマッタはリゾルバ・フィールドを持ちません。
リゾルバ・フィールドの変更が効果を持つのは、解析時のみです。テキスト文字列の解析は2段階で行われます。フェーズ1は、ビルダーに追加されたフィールドに従って行われる基本的なテキスト解析です。フェーズ2では、解析されたフィールドと値のペアが、日付または時間オブジェクト、あるいはその両方に解決されます。リゾルバ・フィールドは、フェーズ1と2の間でフィールドと値のペアをフィルタリングするために使用されます。
日付または時間の解決方法を2つ以上から選択する場合に使用できます。たとえば、フォーマッタが年、月、「月の日」、および「年の日」から構成されている場合、日付を解決する方法は2つあります。引数YEAR
およびDAY_OF_YEAR
を指定してこのメソッドを呼び出すと、日付は必ず年と「年の日」を使用して解決されます。これは実質的に、解決フェーズで月と「月の日」は無視されることを意味します。
同様に、このメソッドを使用すると、それ以外の場合には照合される2次的なフィールドを無視することができます。たとえば、フォーマッタが年、月、「月の日」、および曜日から構成されている場合、日付を解決する方法は1つだけですが、解析された曜日の値が解決された日付と照合されます。引数YEAR
、MONTH_OF_YEAR
、およびDAY_OF_MONTH
を指定してこのメソッドを呼び出すと、日付は必ず正しく解決されます。ただし、曜日の照合は行われません。
実装の観点からは、このメソッドは次のように動作します。解析フェーズの結果は、フィールドから値へのマップとみなすことができます。このメソッドは、フェーズ1と2の間でそのマップのフィルタリングを発生させて、このメソッドの引数として指定されたフィールド以外のフィールドをすべて削除します。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
resolverFields
- リゾルバ・フィールドの新しいセット。フィールドがない場合はnullpublic String format(TemporalAccessor temporal)
これは、フォーマッタのルールを使用して、日付/時間をStringに書式設定します。
temporal
- 書式設定する時間的オブジェクト。null以外DateTimeException
- 書式設定中にエラーが発生した場合public void formatTo(TemporalAccessor temporal, Appendable appendable)
Appendable
に書式設定します。
これは、書式設定された日付/時間を、指定された出力先に出力します。Appendable
は、すべての主要な文字出力クラス(StringBuffer
、StringBuilder
、PrintStream
、Writer
など)によって実装される汎用インタフェースです。
Appendable
のメソッドはIOException
をスローしますが、このメソッドはスローしません。かわりに、IOException
はすべて実行時例外にラップされます。
temporal
- 書式設定する時間的オブジェクト。null以外appendable
- 書式設定後のAppendable。null以外DateTimeException
- 書式設定中にエラーが発生した場合public TemporalAccessor parse(CharSequence text)
これはテキストを完全に解析して、時間的オブジェクトを生成します。通常は、parse(CharSequence, TemporalQuery)
を使用するほうが便利です。このメソッドの結果は、解決されたTemporalAccessor
です。有効な日付/時間を保証するために基本的な検証チェックが適用されています。
テキストの長さ全体を読み取ることなく解析が完了した場合や、解析中またはマージ中に問題が発生した場合は、例外がスローされます。
text
- 解析するテキスト。null以外DateTimeParseException
- 要求された結果を解析できない場合public TemporalAccessor parse(CharSequence text, ParsePosition position)
これはテキストを解析しますが、文字列の先頭から解析を開始したり、末尾で終了したりする必要はありません。このメソッドの結果は、解決されたTemporalAccessor
です。有効な日付/時間を保証するために基本的な検証チェックが適用されています。
テキストは、指定された開始位置ParsePosition
から解析されます。テキストの長さ全体を解析する必要はなく、ParsePosition
は解析の終了位置のインデックスで更新されます。
このメソッドの処理は、ParsePosition
をjava.text.Format
に対して使用する類似のメソッドとは多少異なります。そのクラスは、ParsePosition
のエラー・インデックスを使用してエラーを返します。一方、このメソッドはエラーが発生するとDateTimeParseException
をスローし、その例外にエラー・インデックスを含めます。日付/時間の解析と解決がこのAPIではより複雑になったため、この動作変更が必要になりました。
フォーマッタが同じフィールドを複数回解析し、値が異なっている場合、結果はエラーになります。
text
- 解析するテキスト。null以外position
- 解析を開始する位置。解析された長さで更新され、エラーがあればそのインデックスで更新されます。null以外DateTimeParseException
- 要求された結果を解析できない場合IndexOutOfBoundsException
- 位置が無効な場合public <T> T parse(CharSequence text, TemporalQuery<T> query)
ほとんどのアプリケーションでは、解析にこのメソッドを使用するようにしてください。これはテキストを完全を解析して、要求された日付/時間を生成します。通常、問合わせはfrom(TemporalAccessor)
メソッドへのメソッド参照です。たとえば、
LocalDateTime dt = parser.parse(str, LocalDateTime::from);テキストの長さ全体を読み取ることなく解析が完了した場合や、解析中またはマージ中に問題が発生した場合は、例外がスローされます。
T
- 解析された日付/時間の型text
- 解析するテキスト。null以外query
- 解析後の型を定義する問合わせ。null以外DateTimeParseException
- 要求された結果を解析できない場合public TemporalAccessor parseBest(CharSequence text, TemporalQuery<?>... queries)
この解析メソッドは、パーサーがオプション要素を処理できる場合に使いやすいメソッドです。たとえば、「uuuu-MM-dd HH.mm[ VV]」というパターンは、完全に解析してZonedDateTime
にすることも、部分的に解析してLocalDateTime
にすることもできます。もっとも一致する完全解析オプションから始めて、もっとも一致の少ない最小解析オプションまで、問合わせを順に指定する必要があります。通常、問合わせはfrom(TemporalAccessor)
メソッドへのメソッド参照です。
結果は、正常に解析された最初の型に関連付けられます。通常、アプリケーションではinstanceof
を使用して結果を確認します。たとえば、
TemporalAccessor dt = parser.parseBest(str, ZonedDateTime::from, LocalDateTime::from); if (dt instanceof ZonedDateTime) { ... } else { ... }テキストの長さ全体を読み取ることなく解析が完了した場合や、解析中またはマージ中に問題が発生した場合は、例外がスローされます。
text
- 解析するテキスト。null以外queries
- 試みる解析後の型を定義する問合わせ。TemporalAccessor
を実装する必要があります。null以外IllegalArgumentException
- 2つ未満の型が指定された場合DateTimeParseException
- 要求された結果を解析できない場合public TemporalAccessor parseUnresolved(CharSequence text, ParsePosition position)
解析は2段階の処理として実装されています。まず、フォーマッタで定義されたレイアウトを使用してテキストが解析され、フィールドから値へのMap
、ZoneId
、およびChronology
が生成されます。次に、さまざまなフィールドの検証、結合、簡素化を行ってより有用なフィールドを得ることにより、解析されたデータが解決されます。このメソッドは解析フェーズを実行しますが、解決フェーズは実行しません。
このメソッドの結果は、入力に現れたとおりにデータを表すTemporalAccessor
です。値は検証されないため、「2012-00-65」という日付文字列を解析すると、3つのフィールドを持つ時間的オブジェクトが得られ、年は「2012」、月は「0」、「月の日」は「65」になります。
テキストは、指定された開始位置ParsePosition
から解析されます。テキストの長さ全体を解析する必要はなく、ParsePosition
は解析の終了位置のインデックスで更新されます。
エラーはParsePosition
のエラー・インデックス・フィールドを使用して返され、DateTimeParseException
は使用されません。返されるエラー・インデックスは、そのエラーを表すインデックスに設定されます。呼出し元は、コンテキストを使用する前に、エラーがないかどうかを確認する必要があります。
フォーマッタが同じフィールドを複数回解析し、値が異なっている場合、結果はエラーになります。
このメソッドは、解析中に内部状態にアクセスする必要のある高度なユース・ケース向けです。通常、アプリケーション・コードでは、parse(CharSequence, TemporalQuery)
を使用するか、ターゲットの型に対してこの解析メソッドを使用するようにしてください。
text
- 解析するテキスト。null以外position
- 解析を開始する位置。解析された長さで更新され、エラーがあればそのインデックスで更新されます。null以外DateTimeException
- 解析中になんらかの問題が発生した場合IndexOutOfBoundsException
- 位置が無効な場合public Format toFormat()
java.text.Format
インスタンスとして返します。
返されたFormat
インスタンスは、任意のTemporalAccessor
を書式設定し、解決済のTemporalAccessor
に解析されます。
例外はFormat
の定義に従います。書式設定時のIllegalArgumentException
、および解析時のParseException
またはnullの詳細については、それらのメソッドを参照してください。書式設定では、返された書式設定文字列の属性設定はサポートされません。
public Format toFormat(TemporalQuery<?> parseQuery)
java.text.Format
インスタンスとして返します。
返されたFormat
インスタンスは、任意のTemporalAccessor
を書式設定し、指定された型に解析されます。型は、parse(java.lang.CharSequence)
でサポートされているものでなければなりません。
例外はFormat
の定義に従います。書式設定時のIllegalArgumentException
、および解析時のParseException
またはnullの詳細については、それらのメソッドを参照してください。書式設定では、返された書式設定文字列の属性設定はサポートされません。
parseQuery
- 解析後の型を定義する問合わせ。null以外 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.