本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

TimeSpan.ParseExact 方法 (String, String, IFormatProvider)

 

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

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

public static TimeSpan ParseExact(
	string input,
	string format,
	IFormatProvider formatProvider
)

参数

input
Type: System.String

一个字符串,用于指定进行转换的时间间隔。

format
Type: System.String

用于定义所需的 input 格式的标准或自定义格式字符串。

formatProvider
Type: System.IFormatProvider

一个对象,提供区域性特定的格式设置信息。

返回值

Type: System.TimeSpan

input 对应的时间间隔,由 formatformatProvider 指定。

Exception Condition
ArgumentNullException

inputnull

FormatException

input 的格式无效。

OverflowException

input 表示一个小于 TimeSpan.MinValue 或大于 TimeSpan.MaxValue 的数字。

- 或 -

input 中天数、小时、分钟和秒数四个成分中至少一个超出了其有效范围。

ParseExact(String, String, IFormatProvider)方法分析的时间间隔,它必须是定义的格式的字符串表示format参数,只不过该前导和尾随空白字符将被忽略。 因为input必须符合的格式format完全匹配,你应始终使用异常处理时将用户的字符串输入转换为时间间隔。 如果你不希望使用异常处理,则可以调用TryParseExact(String, String, IFormatProvider, TimeSpan)方法相反。

format参数是一个字符串,包含单个标准格式说明符或一个或多个定义的所需的格式的自定义格式说明符input 有关有效的格式字符串的详细信息,请参阅标准 TimeSpan 格式字符串自定义的 TimeSpan 格式字符串

System_CAPS_important重要事项

ParseExact方法使用由指定的区域性的约定formatProvider仅当format是一种标准TimeSpan字符串设置其值为"g"或"G"格式。 "C"、"t"和"T"标准格式字符串使用固定区域性的格式设置约定。 自定义格式字符串定义的输入字符串的确切格式,并使用原义字符分隔的时间间隔内的组件。

formatProvider参数是IFormatProvider实现,提供返回字符串的格式的区域性特定信息,如果format是一个标准格式字符串。 formatProvider参数可以是任何以下︰

如果formatProvidernullDateTimeFormatInfo使用与当前区域性关联的对象。

下面的示例使用ParseExact(String, String, IFormatProvider)方法,以便分析的时间间隔使用各种格式字符串和区域性的多个字符串表示形式。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string intervalString, format;
      TimeSpan interval;
      CultureInfo culture;

      // Parse hour:minute value with "g" specifier current culture.
      intervalString = "17:14";
      format = "g";
      culture = CultureInfo.CurrentCulture;
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", 
                           intervalString, format);
      }                     
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      }      

      // Parse hour:minute:second value with "G" specifier.
      intervalString = "17:14:48";
      format = "G";
      culture = CultureInfo.InvariantCulture;
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }   
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse hours:minute.second value with "G" specifier 
      // and current (en-US) culture.     
      intervalString = "17:14:48.153";
      format = "G";
      culture = CultureInfo.CurrentCulture;
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }   
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse days:hours:minute.second value with "G" specifier 
      // and current (en-US) culture.     
      intervalString = "3:17:14:48.153";
      format = "G";
      culture = CultureInfo.CurrentCulture;
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }   
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }   
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse days:hours:minute.second value with "G" specifier 
      // and fr-FR culture.     
      intervalString = "3:17:14:48.153";
      format = "G";
      culture = new CultureInfo("fr-FR");
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse days:hours:minute.second value with "G" specifier 
      // and fr-FR culture.     
      intervalString = "3:17:14:48,153";
      format = "G";
      try {
         interval = TimeSpan.ParseExact(intervalString, format, culture);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }   
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse a single number using the "c" standard format string. 
      intervalString = "12";
      format = "c";
      try {
         interval = TimeSpan.ParseExact(intervalString, format, null);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse a single number using the "%h" custom format string. 
      format = "%h";
      try {
         interval = TimeSpan.ParseExact(intervalString, format, null);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      } 

      // Parse a single number using the "%s" custom format string. 
      format = "%s";
      try {
         interval = TimeSpan.ParseExact(intervalString, format, null);
         Console.WriteLine("'{0}' --> {1}", intervalString, interval);
      }
      catch (FormatException) {
         Console.WriteLine("'{0}': Bad Format for '{1}'", intervalString, format);
      }
      catch (OverflowException) {
         Console.WriteLine("'{0}': Overflow", intervalString);
      }
   }
}
// The example displays the following output:
//       '17:14' --> 17:14:00
//       '17:14:48': Bad Format for 'G'
//       '17:14:48.153': Bad Format for 'G'
//       '3:17:14:48.153' --> 3.17:14:48.1530000
//       '3:17:14:48.153': Bad Format for 'G'
//       '3:17:14:48,153' --> 3.17:14:48.1530000
//       '12' --> 12.00:00:00
//       '12' --> 12:00:00
//       '12' --> 00:00:12

通用 Windows 平台
自 8 起可用
.NET Framework
自 4.0 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 4.0 起可用
Windows Phone Silverlight
自 7.1 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: