导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

DateTimeOffset.TryParseExact 方法 (String, String, IFormatProvider, DateTimeStyles, DateTimeOffset%)

2013/12/13

使用指定的格式、区域性特定格式信息和样式将日期和时间的指定字符串表示形式转换为其等效的 DateTimeOffset。字符串表示形式的格式必须与指定的格式完全匹配。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public static bool TryParseExact(
	string input,
	string format,
	IFormatProvider formatProvider,
	DateTimeStyles styles,
	out DateTimeOffset result
)

参数

input
类型: System.String
包含要转换的日期和时间的字符串。
format
类型: System.String
用于定义所需的 input 格式的格式说明符。
formatProvider
类型: System.IFormatProvider
一个对象,提供有关 input 的区域性特定格式设置信息。
styles
类型: System.Globalization.DateTimeStyles
枚举值的按位组合,用于指示输入的允许格式。一个要指定的典型值为 None
result
类型: System.DateTimeOffset %
当此方法返回时,如果转换成功,则包含与 input 的日期和时间等效的 DateTimeOffset;如果转换失败,则包含 MinValue。如果 input 参数为 null,或者该参数不包含 formatprovider 所定义的所需格式的日期和时间的有效字符串表示形式,则转换失败。该参数未经初始化即被传递。

返回值

类型: System.Boolean
如果 input 参数成功转换,则为 true;否则为 false

异常条件
ArgumentException

styles 包括未定义的 DateTimeStyles 值。

- 或 -

DateTimeStyles.NoCurrentDateDefault 不受支持。

- 或 -

styles 包括相互排斥的 DateTimeStyles 值。

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) 方法的此重载类似于 DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) 方法,不同之处在于此方法在转换失败时不引发异常。它所分析的日期和时间的字符串表示形式必须与 format 参数所指定的模式完全匹配。如果 input 字符串与此模式(可能在 styles 参数所定义的空白中有一些变体)不匹配,则分析操作将失败,此方法将返回 false

format 参数是一个字符串,该字符串包含单一的标准格式说明符,或者包含一个或多个用于定义 input 的要求模式的自定义格式说明符。如果 format 包括 zzzzzz 自定义格式说明符以指示 input 中必须存在偏移量,则该偏移量必须包括负号或正号。如果缺少符号,则分析操作将失败,此方法将返回 false

如果 format 要求 input 包含日期而不是时间,则会为所生成的 DateTimeOffset 对象分配午夜时间 (0:00:00)。如果 format 要求 input 包含时间而不是日期,则会为所生成的 DateTimeOffset 对象分配本地系统的当前日期。如果 format 不要求 input 包含偏移量,则所生成的 DateTimeOffset 对象的偏移量取决于 styles 参数的值。如果 styles 包括 AssumeLocal,则会将本地时区的偏移量分配给 DateTimeOffset 对象。如果 styles 包括 AssumeUniversal,则将协调世界时 (UTC) 偏移量或 +00:00 分配给 DateTimeOffset 对象。如果未指定任何一个值,则使用本地时区的偏移量。

用于 input 中的特定日期和时间的符号和字符串是由 formatProvider 参数定义的。如果 format 是标准格式说明符字符串,则 input 的精度模式也是由该参数定义的。formatProvider 参数可以是下面的任何一项:

如果 formatprovidernull,则使用与当前区域性相对应的 CultureInfo 对象。

styles 参数定义输入字符串中是否允许存在空白,指示如何分析无显式偏移量组成部分的字符串,并支持在分析操作过程中进行 UTC 转换。除 NoCurrentDateDefault 以外,DateTimeStyles 枚举的所有成员都受支持。下表列出了每个受支持成员的作用。

DateTimeStyles 成员

行为

AdjustToUniversal

分析 input,如果需要,则将其转换为 UTC。这等效于先分析字符串,然后再调用所返回的 DateTimeOffset 对象的 DateTimeOffset.ToUniversalTime 方法。

AssumeLocal

如果 format 不要求 input 包含偏移量值,则会为所返回的 DateTimeOffset 对象提供本地时区的偏移量。这是默认行为。

AssumeUniversal

如果 format 不要求 input 包含偏移量值,则会为所返回的 DateTimeOffset 对象提供 UTC 偏移量 (+00:00)。

AllowInnerWhite

允许 input 包括 format 未指定的内部空白。在日期和时间组成部分之间以及个别组成部分(偏移量除外)的内部可以出现多余的空白,分析此字符串时,多余的空白会被忽略。

AllowLeadingWhite

允许 input 包括 format 未指定的前导空格。分析字符串时将忽略这些空格。

AllowTrailingWhite

允许 input 包括 format 未指定的尾随空格。分析字符串时将忽略这些空格。

AllowWhiteSpaces

允许 input 包括 format 未指定的前导、尾随和内部空格。在分析此字符串时,将忽略 format 中未指定的所有多余空白字符。

None

指示 input 中不允许有多余的空白。空白必须完全按照 format 中指定的方式出现。这是默认行为。

RoundtripKind

没有作用,因为 DateTimeOffset 结构不包括 Kind 属性。

下面的示例将 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) 方法与标准的和自定义的格式说明符、固定的区域性以及各个 DateTimeStyles 值一起使用,以分析一些日期和时间字符串。


string dateString, format;
DateTimeOffset result;
IFormatProvider provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AssumeUniversal,
                                 out result))
   outputBlock.Text += String.Format("'{0}' converts to {1}.", dateString, result.ToString()) + "\n";
else
   outputBlock.Text += String.Format("'{0}' is not in the correct format.", dateString) + "\n";

// Parse date-only value with leading white space.
// Should return False because only trailing whitespace is  
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowTrailingWhite,
                                 out result))
   outputBlock.Text += String.Format("'{0}' converts to {1}.", dateString, result.ToString()) + "\n";
else
   outputBlock.Text += String.Format("'{0}' is not in the correct format.", dateString) + "\n";

// Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00";
format = "MM/dd/yyyy H:mm zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowWhiteSpaces,
                                 out result))
   outputBlock.Text += String.Format("'{0}' converts to {1}.", dateString, result.ToString()) + "\n";
else
   outputBlock.Text += String.Format("'{0}' is not in the correct format.", dateString) + "\n";

// Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                DateTimeStyles.AllowWhiteSpaces |
                                DateTimeStyles.AdjustToUniversal,
                                out result))
   outputBlock.Text += String.Format("'{0}' converts to {1}.", dateString, result.ToString()) + "\n";
else
   outputBlock.Text += String.Format("'{0}' is not in the correct format.", dateString) + "\n";
// The example displays the following output:
//    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2014 Microsoft