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
參數所定義,它可以是下列任一項:
- CultureInfo物件,表示在 參數中使用
s
其格式的文化特性。 屬性 DateTimeFormatInfo 所 CultureInfo.DateTimeFormat 傳回的物件會定義 中使用的s
格式設定。 - DateTimeFormatInfo對象,定義 中
s
所使用的格式設定。 - 自訂 IFormatProvider 實作。 其 IFormatProvider.GetFormat 方法會傳 DateTimeFormatInfo 回 物件,這個物件會定義 中使用的
s
格式設定。
如果 provider
是 null
,則會使用目前的文化特性。
如果 s
是目前日曆中閏年之閏日字串表示法,則方法會成功剖析 s
。 如果 s
是 目前行事曆 provider
中非閏年之閏日的字串表示,則剖析作業會失敗,而且方法會傳 false
回 。
參數 styles
會定義剖析字串的精確解譯,以及剖析作業應該如何處理它。 它可以是列舉的 DateTimeStyles 一或多個成員,如下表所述。
DateTimeStyles 成員 | 描述 |
---|---|
AdjustToUniversal | 視需要剖析 s ,並將它轉換成UTC。 如果 s 包含時區位移,或如果 s 不包含時區資訊,但 styles 包含 DateTimeStyles.AssumeLocal 旗標,則方法會剖析字串、呼叫 ToUniversalTime 將傳 DateTime 回的值轉換為 UTC,並將 屬性設定 Kind 為 DateTimeKind.Utc。 如果 s 表示它代表 UTC,或者如果 s 不包含時區資訊,但 styles 包含 DateTimeStyles.AssumeUniversal 旗標,則方法會剖析字串、在傳 DateTime 回的值上不執行時區轉換,並將 屬性設定 Kind 為 DateTimeKind.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 轉換為當地時間,並將其 屬性設定Kind為 DateTimeKind.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) 會執行任何必要的時間轉換,並傳回下列其中一項:
- DateTime值,其日期和時間會反映當地時間,其 Kind 屬性為 DateTimeKind.Local。
- 或者,如果
styles
包含 AdjustToUniversal 旗標,則為值, DateTime 其日期和時間會反映UTC,且其 Kind 屬性為 DateTimeKind.Utc。
您可以使用 旗標來覆寫 DateTimeStyles.RoundtripKind 此行為。
剖析自定義文化特性
如果您剖析針對自定義文化特性產生的日期和時間字串,請使用 TryParseExact 方法,而不是 TryParse 方法來改善剖析作業成功的可能性。 自定義文化特性日期和時間字串可能很複雜且難以剖析。 方法 TryParse 會嘗試剖析具有數個隱含剖析模式的字串,這一切可能會失敗。 相反地,方法 TryParseExact 會要求您明確指定一或多個可能成功的確切剖析模式。
如需自定義文化特性的詳細資訊,請參閱 類別 System.Globalization.CultureAndRegionInfoBuilder 。