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 。 日期和时间可以用一对前导和尾随数字符号字符('#',U+0023)括起来,并且可以用一个或多个 NULL 字符(U+0000)进行尾随。

日期和时间元素的特定有效格式以及日期和时间中使用的名称和符号由 provider 参数定义,可以是下列任一类型:

如果 providernull,则使用当前区域性。

如果 s 当前日历中的 leap 年中的 leap 日是字符串表示形式,则该方法会成功分析 s 。 如果是 s 当前日历 provider中非 leap 年中的 leap 日字符串表示形式,则分析操作失败,方法返回 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 转换为本地时间,并将其Kind属性设置为 DateTimeKind.Local
None 虽然有效,但忽略此值。
RoundtripKind 对于包含时区信息的字符串,尝试阻止将日期和时间字符串 DateTime 转换为其 Kind 属性设置为 DateTimeKind.Local的值。 通常,此类字符串是使用“o”、“r”或“u”标准格式说明符调用 DateTime.ToString(String) 方法创建的。

如果 s 不包含时区信息,则 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 该方法将返回 DateTimeKind 属性为 DateTimeKind.Unspecified 的值,除非 styles 标志指示否则。 如果 s 包括时区或时区偏移信息,该方法 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 将执行任何必要的时间转换,并返回下列值之一:

可以使用标志重写 DateTimeStyles.RoundtripKind 此行为。

分析自定义区域性

如果分析为自定义区域性生成的日期和时间字符串,请使用 TryParseExact 该方法而不是 TryParse 方法来提高分析操作成功的可能性。 自定义区域性日期和时间字符串可能复杂且难以分析。 该方法 TryParse 尝试分析具有多个隐式分析模式的字符串,所有这些模式都可能失败。 相反,该方法 TryParseExact 要求显式指定一个或多个可能成功的确切分析模式。

有关自定义区域性的详细信息,请参阅该 System.Globalization.CultureAndRegionInfoBuilder 类。