語言

AbstractChronology.ResolveDate 方法

定義

在解析過程中,將解析後 ChronoField 的值解析成日期。

[Android.Runtime.Register("resolveDate", "(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;", "GetResolveDate_Ljava_util_Map_Ljava_time_format_ResolverStyle_Handler", ApiSince=26)]
public virtual Java.Time.Chrono.IChronoLocalDate? ResolveDate(System.Collections.Generic.IDictionary<Java.Time.Temporal.ITemporalField,Java.Lang.Long>? fieldValues, Java.Time.Format.ResolverStyle? resolverStyle);
[<Android.Runtime.Register("resolveDate", "(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;", "GetResolveDate_Ljava_util_Map_Ljava_time_format_ResolverStyle_Handler", ApiSince=26)>]
abstract member ResolveDate : System.Collections.Generic.IDictionary<Java.Time.Temporal.ITemporalField, Java.Lang.Long> * Java.Time.Format.ResolverStyle -> Java.Time.Chrono.IChronoLocalDate
override this.ResolveDate : System.Collections.Generic.IDictionary<Java.Time.Temporal.ITemporalField, Java.Lang.Long> * Java.Time.Format.ResolverStyle -> Java.Time.Chrono.IChronoLocalDate

參數

fieldValues
IDictionary<ITemporalField,Long>

欄位映射到可更新的值,而非空值

resolverStyle
ResolverStyle

請求的解決類型,而非 null

傳回

解決日期,若資訊不足則為空,無法產生日期

實作

屬性

備註

在解析過程中,將解析後 ChronoField 的值解析成日期。

大多數 TemporalField 實作都是在場上用 resolve 方法解決的。 相較之下,該 ChronoField 類別定義的欄位僅與時間順序有意義。 因此, ChronoField 日期欄位在此依照特定年代順序來解析。

ChronoField 實例透過此方法解析,且可於子類別中覆寫。 <ul><li>EPOCH_DAY - 若存在,會轉換成日期,其他日期欄位則與日期交叉核對。 <li>PROLEPTIC_MONTH - 若存在,則分為 YEAR 與 MONTH_OF_YEAR。 如果模式是嚴格模式或智慧模式,則該欄位會被驗證。 <li>YEAR_OF_ERA 和 ERA - 如果兩者同時存在,則結合形成一個 YEAR。 在寬鬆模式下, YEAR_OF_ERA 範圍不會被驗證;在智慧且嚴格模式下則是。 ERA三種模式均可驗證射程。 若僅有 , YEAR_OF_ERA 且模式為智慧或寬鬆,則假設最後可用時代為該時代。 在嚴格模式下,不假設時代,且 YEAR_OF_ERA 保持不變。 如果只有 存在, ERA 則保持不變。 <li>YEAR 和 MONTH_OF_YEARDAY_OF_MONTH - 如果三者同時出現,則合併成日期。 在這三種模式中,皆 YEAR 經過驗證。 如果模式是智慧型或嚴格型態,則月份和日期會被驗證。 若模式寬鬆,則日期會以類似於在所請求年份第一個月第一天建立日期,然後將月份差加上天差的方式合併。 如果模式是智慧型,且月的日期大於年度的最高值,則該月份的日期會調整為每月的最後一天。 若模式為嚴格,則三個欄位必須形成有效日期。 <li>YEAR 和 DAY_OF_YEAR - 如果兩者同時存在,則合併成一個日期。 在這三種模式中,皆 YEAR 經過驗證。 如果模式寬鬆,則日期會以類似於在申請年份第一天建立日期,然後加上天數差的方式合併。 如果模式是智慧模式或嚴格模式,則兩個欄位必須形成有效日期。 <li>YEAR、 MONTH_OF_YEAR、和 ALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 如果四個都出現,則會將它們合併成一個日期。 在這三種模式中,皆 YEAR 經過驗證。 若模式寬鬆,則日期會以類似於在請求年份第一個月第一天建立日期,然後加上月份差、週數、天數的差額等同方式合併。 如果模式是智慧模式或嚴格模式,則四個欄位都會被驗證到其外圍範圍。 接著,日期會以類似於在申請的年度和月份的第一天建立日期,然後將週數和天數相加以達到它們的數值的方式。 若模式嚴格,日期也會被驗證,以確認日期與週數調整是否改變了月份。 <li>YEAR、 MONTH_OF_YEAR、和 ALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 如果四個都出現,則會將它們合併成一個日期。 方法與上述相同,持續數年、數月及數週。ALIGNED_DAY_OF_WEEK_IN_MONTH 當處理完年、月、週後,週日會調整為下一個或相同的對應星期。 <li>YEAR 和 ALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 如果三者同時出現,則合併成日期。 在這三種模式中,皆 YEAR 經過驗證。 如果模式寬鬆,則日期會以類似於在申請年份的第一天建立日期,然後將週數差加上天數的方式合併。 若模式為智慧模式或嚴格模式,則三個欄位皆被驗證至其外圍範圍。 接著將日期合併,類似於在申請年份的第一天建立日期,然後將週數和天數相加以達到其數值。 若模式嚴格,日期也會被驗證,以確認日期與週的調整是否改變了年份。 <li>YEAR 和 ALIGNED_WEEK_OF_YEARDAY_OF_WEEK - 如果三者同時出現,則合併成日期。 方法與上述相同,持續多年及數週。ALIGNED_DAY_OF_WEEK_IN_YEAR 在處理完年和週後,星期幾會調整為下一個或相同的星期幾。 </ul>

預設實作適用於大多數日曆系統。 若 java.time.temporal.ChronoField#YEAR_OF_ERA 未發現 , java.time.temporal.ChronoField#ERA 則使用最後 #eras() 一個紀元。 實作假設每週為7天,月的第一天值為1,年頭第一天值為1,且月頭和年頭始終存在。

Java 文件 java.time.chrono.AbstractChronology.resolveDate(java.util.Map<java.time.temporal.TemporalField, java.lang.Long>, java.time.format.ResolverStyle)。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於