System.DateTime.TryParse 方法

本文提供此 API 參考文件的補充備註。

方法 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 會剖析可包含日期、時間和時區資訊的字串。 與 方法類似 DateTime.Parse(String, IFormatProvider, DateTimeStyles) ,不同之處在於, DateTime.TryParse(String, DateTime) 如果轉換失敗,方法不會擲回例外狀況。

此方法會嘗試忽略無法辨識的數據,並完全剖析輸入字串 (s)。 如果 s 包含時間但沒有日期,則方法預設會取代目前的日期,或者,如果 styles 包含 NoCurrentDateDefault 旗標,則會取代 DateTime.Date.MinValue。 如果 s 包含日期,但沒有時間,則會使用 12:00 午夜做為預設時間。 如果日期存在,但其年份元件只包含兩位數,則會根據 屬性的值Calendar.TwoDigitYearMax,轉換成參數目前行事曆中的provider年份。 中 s 任何前置、內部或尾端空格符皆會被忽略。 日期和時間可以加上一對開頭和尾端的 NUMBER SIGN 字元('#',U+0023),而且可以加上一或多個 NULL 字元(U+0000)。

日期和時間元素的特定有效格式,以及日期和時間中使用的名稱和符號,是由 provider 參數所定義,它可以是下列任一項:

如果 providernull,則會使用目前的文化特性。

如果 s 是目前日曆中閏年之閏日字串表示法,則方法會成功剖析 s 。 如果 s 是 目前行事曆 provider中非閏年之閏日的字串表示,則剖析作業會失敗,而且方法會傳 false回 。

參數 styles 會定義剖析字串的精確解譯,以及剖析作業應該如何處理它。 它可以是列舉的 DateTimeStyles 一或多個成員,如下表所述。

DateTimeStyles 成員 描述
AdjustToUniversal 視需要剖析 s ,並將它轉換成UTC。 如果 s 包含時區位移,或如果 s 不包含時區資訊,但 styles 包含 DateTimeStyles.AssumeLocal 旗標,則方法會剖析字串、呼叫 ToUniversalTime 將傳 DateTime 回的值轉換為 UTC,並將 屬性設定 KindDateTimeKind.Utc。 如果 s 表示它代表 UTC,或者如果 s 不包含時區資訊,但 styles 包含 DateTimeStyles.AssumeUniversal 旗標,則方法會剖析字串、在傳 DateTime 回的值上不執行時區轉換,並將 屬性設定 KindDateTimeKind.Utc。 在其他所有情況下,旗標沒有任何作用。
AllowInnerWhite 雖然有效,但會忽略此值。 允許在的 s日期和時間元素中使用內部空格符。
AllowLeadingWhite 雖然有效,但會忽略此值。 允許在 的 s日期和時間元素中使用前置空格符。
AllowTrailingWhite 雖然有效,但會忽略此值。 的日期和時間元素 s中允許尾端空格符。
AllowWhiteSpaces 指定可能包含 s 開頭、內部和尾端空格符。 這是預設行為。 它無法藉由提供更嚴格的 DateTimeStyles 列舉值來覆寫,例如 DateTimeStyles.None
AssumeLocal 指定如果 s 缺少任何時區資訊,則會假設它代表當地時間。 DateTimeStyles.AdjustToUniversal除非旗標存在,Kind否則傳DateTime回值的 屬性會設定為 DateTimeKind.Local
AssumeUniversal 指定如果 s 缺少任何時區資訊,則會假設它代表 UTC。 DateTimeStyles.AdjustToUniversal除非旗標存在,否則 方法會將傳DateTime回的值從 UTC 轉換為當地時間,並將其 屬性設定KindDateTimeKind.Local
None 雖然有效,但會忽略此值。
RoundtripKind 針對包含時區資訊的字串,嘗試防止將日期和時間字串 DateTime 轉換成值,其 Kind 屬性設定為 DateTimeKind.Local。 一般而言,這類字串是使用 「o」、“r” 或 “u” 標準格式規範呼叫 DateTime.ToString(String) 方法所建立。

如果s不包含時區資訊,方法會DateTime傳回其 Kind 屬性為 DateTimeKind.Unspecified 的值,DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime)除非styles旗標另有指示。 如果 s 包含時區或時區位移資訊,此方法 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 會執行任何必要的時間轉換,並傳回下列其中一項:

您可以使用 旗標來覆寫 DateTimeStyles.RoundtripKind 此行為。

剖析自定義文化特性

如果您剖析針對自定義文化特性產生的日期和時間字串,請使用 TryParseExact 方法,而不是 TryParse 方法來改善剖析作業成功的可能性。 自定義文化特性日期和時間字串可能很複雜且難以剖析。 方法 TryParse 會嘗試剖析具有數個隱含剖析模式的字串,這一切可能會失敗。 相反地,方法 TryParseExact 會要求您明確指定一或多個可能成功的確切剖析模式。

如需自定義文化特性的詳細資訊,請參閱 類別 System.Globalization.CultureAndRegionInfoBuilder