TimeSpan.Parse Метод

Определение

Преобразует строковое представление интервала времени в его эквивалент TimeSpan.

Перегрузки

Parse(String)

Преобразует строковое представление интервала времени в его эквивалент TimeSpan.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Преобразует представление диапазона интервала времени в его эквивалент TimeSpan, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.

Parse(String, IFormatProvider)

Преобразует строковое представление интервала времени в его эквивалент TimeSpan, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.

Parse(String)

Преобразует строковое представление интервала времени в его эквивалент TimeSpan.

public:
 static TimeSpan Parse(System::String ^ s);
public static TimeSpan Parse (string s);
static member Parse : string -> TimeSpan
Public Shared Function Parse (s As String) As TimeSpan

Параметры

s
String

Строка, которая указывает преобразуемый интервал времени.

Возвращаемое значение

TimeSpan

Интервал времени, соответствующий параметру s.

Исключения

s имеет значение null.

Параметр s задан в недопустимом формате.

Параметр s представляет число меньше MinValue или больше MaxValue.

-или- Как минимум один из компонентов дней, часов, минут или секунд выходит за пределы допустимого диапазона.

Примеры

В следующем примере используется Parse метод для преобразования каждого элемента массива строк в TimeSpan значение. Он изменяет текущий язык и региональные параметры системы на хорватский-Хорватия ("HR-HR") и English-США ("en-US"), чтобы продемонстрировать, как текущий язык и региональные параметры влияют на операцию синтаксического анализа.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string[] values = { "6", "6:12", "6:12:14", "6:12:14:45", 
                          "6.12:14:45", "6:12:14:45.3448", 
                          "6:12:14:45,3448", "6:34:14:45" };
      string[] cultureNames = { "hr-HR", "en-US"};
      
      // Change the current culture.
      foreach (string cultureName in cultureNames)
      {
         Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
         Console.WriteLine("Current Culture: {0}", 
                           Thread.CurrentThread.CurrentCulture.Name);
         foreach (string value in values)
         {
            try {
               TimeSpan ts = TimeSpan.Parse(value);
               Console.WriteLine("{0} --> {1}", value, ts.ToString("c"));
            }
            catch (FormatException) {
               Console.WriteLine("{0}: Bad Format", value);
            }   
            catch (OverflowException) {
               Console.WriteLine("{0}: Overflow", value);
            }
         } 
         Console.WriteLine();                                
      }
   }
}
// The example displays the following output:
//    Current Culture: hr-HR
//    6 --> 6.00:00:00
//    6:12 --> 06:12:00
//    6:12:14 --> 06:12:14
//    6:12:14:45 --> 6.12:14:45
//    6.12:14:45 --> 6.12:14:45
//    6:12:14:45.3448: Bad Format
//    6:12:14:45,3448 --> 6.12:14:45.3448000
//    6:34:14:45: Overflow
//    
//    Current Culture: en-US
//    6 --> 6.00:00:00
//    6:12 --> 06:12:00
//    6:12:14 --> 06:12:14
//    6:12:14:45 --> 6.12:14:45
//    6.12:14:45 --> 6.12:14:45
//    6:12:14:45.3448 --> 6.12:14:45.3448000
//    6:12:14:45,3448: Bad Format
//    6:34:14:45: Overflow
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim values() As String = { "6", "6:12", "6:12:14", "6:12:14:45", 
                                 "6.12:14:45", "6:12:14:45.3448", 
                                 "6:12:14:45,3448", "6:34:14:45" }
      Dim cultureNames() As String = { "hr-HR", "en-US"}
      
      ' Change the current culture.
      For Each cultureName As String In cultureNames
         Thread.CurrentThread.CurrentCulture = New CultureInfo(cultureName)
         Console.WriteLine("Current Culture: {0}", 
                           Thread.CurrentThread.CurrentCulture.Name)
         For Each value As String In values
            Try
               Dim ts As TimeSpan = TimeSpan.Parse(value)
               Console.WriteLine("{0} --> {1}", value, ts.ToString("c"))
            Catch e As FormatException
               Console.WriteLine("{0}: Bad Format", value)
            Catch e As OverflowException
               Console.WriteLine("{0}: Overflow", value)
            End Try      
         Next 
         Console.WriteLine()                                
      Next
   End Sub
End Module
' The example displays the following output:
'       Current Culture: hr-HR
'       6 --> 6.00:00:00
'       6:12 --> 06:12:00
'       6:12:14 --> 06:12:14
'       6:12:14:45 --> 6.12:14:45
'       6.12:14:45 --> 6.12:14:45
'       6:12:14:45.3448: Bad Format
'       6:12:14:45,3448 --> 6.12:14:45.3448000
'       6:34:14:45: Overflow
'       
'       Current Culture: en-US
'       6 --> 6.00:00:00
'       6:12 --> 06:12:00
'       6:12:14 --> 06:12:14
'       6:12:14:45 --> 6.12:14:45
'       6.12:14:45 --> 6.12:14:45
'       6:12:14:45.3448 --> 6.12:14:45.3448000
'       6:12:14:45,3448: Bad Format
'       6:34:14:45: Overflow

Комментарии

sПараметр содержит спецификацию интервала времени в формате:

[WS] [-] { d | [d.] чч:мм[:СС[.FF]]} [WS]

Элементы в квадратных скобках ([и]) являются необязательными. Требуется один выбор из списка альтернатив, заключенного в фигурные скобки ({и}) и разделенных вертикальными чертами (|). Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Необязательный пробел.
- Необязательный знак минус, который указывает на отрицательное значение TimeSpan .
d Дни в диапазоне от 0 до 10675199.
. Символ с учетом языка и региональных параметров, разделяющий дни по часам. В инвариантном формате используется символ точки (".").
hh Часы, в диапазоне от 0 до 23.
: Символ разделителя времени с учетом языка и региональных параметров. В инвариантном формате используется символ двоеточия (":").
мм Минут, в диапазоне от 0 до 59.
ss Необязательные секунды в диапазоне от 0 до 59.
. Символ с учетом языка и региональных параметров, разделяющий секунды от долей секунды. В инвариантном формате используется символ точки (".").
FF Необязательные доли секунды, состоящие из одной и семи десятичных цифр.

Если s аргумент имеет только значение дня, он должен включать компонент часов и минут; другие компоненты являются необязательными. Если они есть, то значения каждого компонента времени должны попадать в указанный диапазон. Например, значение чч, компонент часов, должно находиться в диапазоне от 0 до 23. Из-за этого передача "23:00:00" в Parse метод возвращает интервал времени в 23 часа. С другой стороны, передача "24:00:00" возвращает интервал времени, равный 24 дням. Поскольку "24" находится за пределами диапазона компонента часов, он интерпретируется как компонент дней.

Компоненты s должны совместно указывать интервал времени, который больше или равен TimeSpan.MinValue и меньше или равен TimeSpan.MaxValue .

Parse(String)Метод пытается выполнить синтаксический анализ с s использованием каждого из форматов, зависящих от языка и региональных параметров, для текущего языка и региональных параметров.

Примечания для вызывающих объектов

если компонент временного интервала в строке для синтаксического анализа содержит более семи цифр, операции анализа в платформа .NET Framework 3,5 и более ранних версиях могут отличаться от операций синтаксического анализа в платформа .NET Framework 4 и более поздних версиях. в некоторых случаях операции анализа, выполняемые в платформа .NET Framework 3,5 и более ранних версиях, могут завершаться сбоем и выдавать исключение OverflowException в платформа .NET Framework 4 и более поздних версий. в других случаях операции анализа, которые вызывают исключение FormatException в платформа .NET Framework 3,5 и более ранних версиях, могут завершиться ошибкой и вызвать исключение OverflowException в платформа .NET Framework 4 и более поздних версий. В следующем примере показаны оба сценария.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

Применяется к

Parse(ReadOnlySpan<Char>, IFormatProvider)

Преобразует представление диапазона интервала времени в его эквивалент TimeSpan, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.

public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider? formatProvider = default);
public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider formatProvider = default);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As ReadOnlySpan(Of Char), Optional formatProvider As IFormatProvider = Nothing) As TimeSpan

Параметры

input
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют интервал времени для преобразования.

formatProvider
IFormatProvider

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

TimeSpan

Интервал времени, соответствующий параметру input, в виде, заданном параметром formatProvider.

Применяется к

Parse(String, IFormatProvider)

Преобразует строковое представление интервала времени в его эквивалент TimeSpan, используя указанные сведения о форматировании, связанные с языком и региональными параметрами.

public:
 static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider);
public static TimeSpan Parse (string input, IFormatProvider formatProvider);
public static TimeSpan Parse (string input, IFormatProvider? formatProvider);
static member Parse : string * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As String, formatProvider As IFormatProvider) As TimeSpan

Параметры

input
String

Строка, которая указывает преобразуемый интервал времени.

formatProvider
IFormatProvider

Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.

Возвращаемое значение

TimeSpan

Интервал времени, соответствующий параметру input, в виде, заданном параметром formatProvider.

Исключения

input имеет значение null.

Параметр input задан в недопустимом формате.

Параметр input представляет число меньше MinValue или больше MaxValue.

-или- Хотя бы один из компонентов дней, часов, минут или секунд в input выходит за пределы допустимого диапазона.

Примеры

В следующем примере определяется массив CultureInfo объектов и используется каждый объект в вызовах Parse(String, IFormatProvider) метода для анализа элементов в массиве строк. В примере показано, как соглашения определенного языка и региональных параметров влияют на операцию форматирования.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] values = { "6", "6:12", "6:12:14", "6:12:14:45", 
                          "6.12:14:45", "6:12:14:45.3448", 
                          "6:12:14:45,3448", "6:34:14:45" };
      CultureInfo[] cultures = { new CultureInfo("en-US"), 
                                 new CultureInfo("ru-RU"),
                                 CultureInfo.InvariantCulture };
      
      string header = String.Format("{0,-17}", "String");
      foreach (CultureInfo culture in cultures)
         header += culture.Equals(CultureInfo.InvariantCulture) ? 
                      String.Format("{0,20}", "Invariant") :
                      String.Format("{0,20}", culture.Name);
      Console.WriteLine(header);
      Console.WriteLine();
      
      foreach (string value in values)
      {
         Console.Write("{0,-17}", value);
         foreach (CultureInfo culture in cultures)
         {
            try {
               TimeSpan ts = TimeSpan.Parse(value, culture);
               Console.Write("{0,20}", ts.ToString("c"));
            }
            catch (FormatException) {
               Console.Write("{0,20}", "Bad Format");
            }   
            catch (OverflowException) {
               Console.Write("{0,20}", "Overflow");
            }      
         }
         Console.WriteLine();                                
      }
   }
}
// The example displays the following output:
//    String                          en-US               ru-RU           Invariant
//    
//    6                          6.00:00:00          6.00:00:00          6.00:00:00
//    6:12                         06:12:00            06:12:00            06:12:00
//    6:12:14                      06:12:14            06:12:14            06:12:14
//    6:12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
//    6.12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
//    6:12:14:45.3448    6.12:14:45.3448000          Bad Format  6.12:14:45.3448000
//    6:12:14:45,3448            Bad Format  6.12:14:45.3448000          Bad Format
//    6:34:14:45                   Overflow            Overflow            Overflow
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      Dim values() As String = { "6", "6:12", "6:12:14", "6:12:14:45", 
                                 "6.12:14:45", "6:12:14:45.3448", 
                                 "6:12:14:45,3448", "6:34:14:45" }
      Dim cultures() As CultureInfo = { New CultureInfo("en-US"), 
                                        New CultureInfo("ru-RU"),
                                        CultureInfo.InvariantCulture }
      
      Dim header As String = String.Format("{0,-17}", "String")
      For Each culture As CultureInfo In cultures
         header += If(culture.Equals(CultureInfo.InvariantCulture), 
                      String.Format("{0,20}", "Invariant"),
                      String.Format("{0,20}", culture.Name))
      Next
      Console.WriteLine(header)
      Console.WriteLine()
      
      For Each value As String In values
         Console.Write("{0,-17}", value)
         For Each culture As CultureInfo In cultures
            Try
               Dim ts As TimeSpan = TimeSpan.Parse(value, culture)
               Console.Write("{0,20}", ts.ToString("c"))
            Catch e As FormatException
               Console.Write("{0,20}", "Bad Format")
            Catch e As OverflowException
               Console.Write("{0,20}", "Overflow")
            End Try      
         Next
         Console.WriteLine()                                
      Next
   End Sub
End Module
' The example displays the following output:
'    String                          en-US               ru-RU           Invariant
'    
'    6                          6.00:00:00          6.00:00:00          6.00:00:00
'    6:12                         06:12:00            06:12:00            06:12:00
'    6:12:14                      06:12:14            06:12:14            06:12:14
'    6:12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
'    6.12:14:45                 6.12:14:45          6.12:14:45          6.12:14:45
'    6:12:14:45.3448    6.12:14:45.3448000          Bad Format  6.12:14:45.3448000
'    6:12:14:45,3448            Bad Format  6.12:14:45.3448000          Bad Format
'    6:34:14:45                   Overflow            Overflow            Overflow

Комментарии

inputПараметр содержит спецификацию интервала времени в формате:

[WS] [-] { d | [d.] чч:мм[:СС[.FF]]} [WS]

Элементы в квадратных скобках ([и]) необязательны; требуется один выбор из списка альтернатив, заключенного в фигурные скобки ({и}) и разделенных вертикальными чертами (|). Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Необязательный пробел.
- Необязательный знак минус, который указывает на отрицательное значение TimeSpan .
d Дни в диапазоне от 0 до 10675199.
. Символ с учетом языка и региональных параметров, разделяющий дни по часам. Значение по умолчанию — символ точки (".").
hh Часы, в диапазоне от 0 до 23.
: Символ разделителя времени с учетом языка и региональных параметров.
мм Минут, в диапазоне от 0 до 59.
ss Необязательные секунды в диапазоне от 0 до 59.
. Символ с учетом языка и региональных параметров, разделяющий секунды от долей секунды. Значение по умолчанию — символ точки (".").
FF Необязательные доли секунды, состоящие из одной и семи десятичных цифр.

Если input аргумент имеет только значение дня, он должен включать компонент часов и минут; другие компоненты являются необязательными. Если они есть, то значения каждого компонента времени должны попадать в указанный диапазон. Например, значение чч, компонент часов, должно находиться в диапазоне от 0 до 23. Из-за этого передача "23:00:00" в Parse метод возвращает интервал времени в 23 часа. С другой стороны, передача "24:00:00" возвращает интервал времени, равный 24 дням. Поскольку "24" находится за пределами диапазона компонента часов, он интерпретируется как компонент дней.

Компоненты input должны совместно указывать интервал времени, который больше или равен TimeSpan.MinValue и меньше или равен TimeSpan.MaxValue .

Parse(String)Метод пытается выполнить синтаксический анализ с input использованием каждого из форматов, зависящих от языка и региональных параметров, для языка и региональных параметров, заданных параметром formatProvider .

formatProviderПараметр — это IFormatProvider реализация, которая предоставляет сведения о формате возвращаемой строки, зависящей от языка и региональных параметров. formatProviderПараметр может быть любым из следующих:

  • CultureInfoОбъект, представляющий язык и региональные параметры, соглашения о форматировании которых должны быть отражены в возвращаемой строке. DateTimeFormatInfoОбъект, возвращаемый CultureInfo.DateTimeFormat свойством, определяет форматирование возвращаемой строки.

  • DateTimeFormatInfoОбъект, определяющий форматирование возвращаемой строки.

  • Пользовательский объект, реализующий IFormatProvider интерфейс. Его IFormatProvider.GetFormat метод возвращает DateTimeFormatInfo объект, предоставляющий сведения о форматировании.

Если formatProvider имеет значение null , то DateTimeFormatInfo используется объект, связанный с текущим языком и региональными параметрами.

Примечания для вызывающих объектов

если компонент временного интервала в строке для синтаксического анализа содержит более семи цифр, операции анализа в платформа .NET Framework 3,5 и более ранних версиях могут отличаться от операций синтаксического анализа в платформа .NET Framework 4 и более поздних версиях. в некоторых случаях операции анализа, выполняемые в платформа .NET Framework 3,5 и более ранних версиях, могут завершаться сбоем и выдавать исключение OverflowException в платформа .NET Framework 4 и более поздних версий. в других случаях операции анализа, которые вызывают исключение FormatException в платформа .NET Framework 3,5 и более ранних версиях, могут завершиться ошибкой и вызвать исключение OverflowException в платформа .NET Framework 4 и более поздних версий. В следующем примере показаны оба сценария.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

Применяется к