TimeSpan.TryParse Метод

Определение

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

Перегрузки

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

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

TryParse(ReadOnlySpan<Char>, TimeSpan)

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

TryParse(String, TimeSpan)

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

TryParse(String, IFormatProvider, TimeSpan)

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, TimeSpan)

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

public:
 static bool TryParse(ReadOnlySpan<char> input, IFormatProvider ^ formatProvider, [Runtime::InteropServices::Out] TimeSpan % result);
public static bool TryParse (ReadOnlySpan<char> input, IFormatProvider? formatProvider, out TimeSpan result);
public static bool TryParse (ReadOnlySpan<char> input, IFormatProvider formatProvider, out TimeSpan result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * TimeSpan -> bool
Public Shared Function TryParse (input As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, ByRef result As TimeSpan) As Boolean

Параметры

input
ReadOnlySpan<Char>

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

formatProvider
IFormatProvider

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

result
TimeSpan

После возврата из этого метода содержит объект, представляющий интервал времени, заданный в параметре input, или значение Zero, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр input успешно преобразован; в противном случае — значение false. Эта операция возвращает значение false, если параметр input имеет значение null или Empty, либо его формат недопустим, либо он представляет интервал времени, меньший MinValue или больший MaxValue, либо минимум один из его компонентов — количество дней, часов, минут или секунд — находится вне допустимого диапазона.

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

TryParse(ReadOnlySpan<Char>, TimeSpan)

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

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] TimeSpan % result);
public static bool TryParse (ReadOnlySpan<char> s, out TimeSpan result);
static member TryParse : ReadOnlySpan<char> * TimeSpan -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As TimeSpan) As Boolean

Параметры

s
ReadOnlySpan<Char>

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

result
TimeSpan

После возврата из этого метода содержит объект, представляющий интервал времени, заданный в параметре s, или значение Zero, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false. Эта операция возвращает значение false, если параметр s имеет значение null или Empty, либо его формат недопустим, либо он представляет интервал времени, меньший MinValue или больший MaxValue, либо минимум один из его компонентов — количество дней, часов, минут или секунд — находится вне допустимого диапазона.

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

TryParse(String, TimeSpan)

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

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] TimeSpan % result);
public static bool TryParse (string s, out TimeSpan result);
public static bool TryParse (string? s, out TimeSpan result);
static member TryParse : string * TimeSpan -> bool
Public Shared Function TryParse (s As String, ByRef result As TimeSpan) As Boolean

Параметры

s
String

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

result
TimeSpan

После возврата из этого метода содержит объект, представляющий интервал времени, заданный в параметре s, или значение Zero, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false. Эта операция возвращает значение false, если параметр s имеет значение null или Empty, либо его формат недопустим, либо он представляет интервал времени, меньший MinValue или больший MaxValue, либо минимум один из его компонентов — количество дней, часов, минут или секунд — находится вне допустимого диапазона.

Примеры

В следующем примере метод используется TryParse для создания TimeSpan объектов из допустимых TimeSpan строк и для указания на сбой операции синтаксического анализа из-за недопустимой строки временного диапазона.

using System;

public class TryParse
{
   private static void ParseTimeSpan(string intervalStr)
   {
      // Write the first part of the output line.
      Console.Write( "{0,20}   ", intervalStr );

      // Parse the parameter, and then convert it back to a string.
      TimeSpan intervalVal; 
      if (TimeSpan.TryParse(intervalStr, out intervalVal)) 
      {
         string intervalToStr = intervalVal.ToString();
  
         // Pad the end of the TimeSpan string with spaces if it 
         // does not contain milliseconds.
         int pIndex = intervalToStr.IndexOf(':');
         pIndex = intervalToStr.IndexOf('.', pIndex);
         if (pIndex < 0)
            intervalToStr += "        ";
   
         Console.WriteLine("{0,21}", intervalToStr);
         // Handle failure of TryParse method.
      }
      else
      {
         Console.WriteLine("Parse operation failed.");
      }
   } 
   
   public static void Main()
   {
        Console.WriteLine( "{0,20}   {1,21}", 
            "String to Parse", "TimeSpan" );    
        Console.WriteLine( "{0,20}   {1,21}", 
            "---------------", "---------------------" );    

        ParseTimeSpan("0");
        ParseTimeSpan("14");
        ParseTimeSpan("1:2:3");
        ParseTimeSpan("0:0:0.250");
        ParseTimeSpan("10.20:30:40.50");
        ParseTimeSpan("99.23:59:59.9999999");
        ParseTimeSpan("0023:0059:0059.0099");
        ParseTimeSpan("23:0:0");
        ParseTimeSpan("24:0:0");
        ParseTimeSpan("0:59:0");
        ParseTimeSpan("0:60:0");
        ParseTimeSpan("0:0:59");
        ParseTimeSpan("0:0:60");
        ParseTimeSpan("10:");
        ParseTimeSpan("10:0");
        ParseTimeSpan(":10");
        ParseTimeSpan("0:10");
        ParseTimeSpan("10:20:");
        ParseTimeSpan("10:20:0");
        ParseTimeSpan(".123");
        ParseTimeSpan("0.12:00");
        ParseTimeSpan("10.");
        ParseTimeSpan("10.12");
        ParseTimeSpan("10.12:00");
   }
}
//            String to Parse                TimeSpan
//            ---------------   ---------------------
//                          0        00:00:00
//                         14     14.00:00:00
//                      1:2:3        01:02:03
//                  0:0:0.250        00:00:00.2500000
//             10.20:30:40.50     10.20:30:40.5000000
//        99.23:59:59.9999999     99.23:59:59.9999999
//        0023:0059:0059.0099        23:59:59.0099000
//                     23:0:0        23:00:00
//                     24:0:0   Parse operation failed.
//                     0:59:0        00:59:00
//                     0:60:0   Parse operation failed.
//                     0:0:59        00:00:59
//                     0:0:60   Parse operation failed.
//                        10:   Parse operation failed.
//                       10:0        10:00:00
//                        :10   Parse operation failed.
//                       0:10        00:10:00
//                     10:20:   Parse operation failed.
//                    10:20:0        10:20:00
//                       .123   Parse operation failed.
//                    0.12:00        12:00:00
//                        10.   Parse operation failed.
//                      10.12   Parse operation failed.
//                   10.12:00     10.12:00:00
Module TryParse
    Sub ParseTimeSpan( intervalStr As String )
        ' Write the first part of the output line.
        Console.Write( "{0,20}   ", intervalStr )

        ' Parse the parameter, and then convert it back to a string.
         Dim intervalVal As TimeSpan 
         If TimeSpan.TryParse( intervalStr, intervalVal ) Then
            Dim intervalToStr As String = intervalVal.ToString( )
   
            ' Pad the end of the TimeSpan string with spaces if it 
            ' does not contain milliseconds.
            Dim pIndex As Integer = intervalToStr.IndexOf( ":"c )
            pIndex = intervalToStr.IndexOf( "."c, pIndex )
            If pIndex < 0 Then   intervalToStr &= "        "
   
            Console.WriteLine( "{0,21}", intervalToStr )
         ' Handle failure of TryParse method.
         Else
            Console.WriteLine("Parse operation failed.")
        End If
    End Sub 

    Public Sub Main( )
        Console.WriteLine( "{0,20}   {1,21}", _
            "String to Parse", "TimeSpan" )    
        Console.WriteLine( "{0,20}   {1,21}", _
            "---------------", "---------------------" )    

        ParseTimeSpan("0")
        ParseTimeSpan("14")
        ParseTimeSpan("1:2:3")
        ParseTimeSpan("0:0:0.250")
        ParseTimeSpan("10.20:30:40.50")
        ParseTimeSpan("99.23:59:59.9999999")
        ParseTimeSpan("0023:0059:0059.0099")
        ParseTimeSpan("23:0:0")
        ParseTimeSpan("24:0:0")
        ParseTimespan("0:59:0")
        ParseTimeSpan("0:60:0")
        ParseTimespan("0:0:59")
        ParseTimeSpan("0:0:60")
        ParseTimeSpan("10:")
        ParsetimeSpan("10:0")
        ParseTimeSpan(":10")
        ParseTimeSpan("0:10")
        ParseTimeSpan("10:20:")
        ParseTimeSpan("10:20:0")
        ParseTimeSpan(".123")
        ParseTimeSpan("0.12:00")
        ParseTimeSpan("10.")
        ParseTimeSpan("10.12")
        ParseTimeSpan("10.12:00")
    End Sub 
End Module 
' This example generates the following output:
'            String to Parse                TimeSpan
'            ---------------   ---------------------
'                          0        00:00:00
'                         14     14.00:00:00
'                      1:2:3        01:02:03
'                  0:0:0.250        00:00:00.2500000
'             10.20:30:40.50     10.20:30:40.5000000
'        99.23:59:59.9999999     99.23:59:59.9999999
'        0023:0059:0059.0099        23:59:59.0099000
'                     23:0:0        23:00:00
'                     24:0:0   Parse operation failed.
'                     0:59:0        00:59:00
'                     0:60:0   Parse operation failed.
'                     0:0:59        00:00:59
'                     0:0:60   Parse operation failed.
'                        10:   Parse operation failed.
'                       10:0        10:00:00
'                        :10   Parse operation failed.
'                       0:10        00:10:00
'                     10:20:   Parse operation failed.
'                    10:20:0        10:20:00
'                       .123   Parse operation failed.
'                    0.12:00        12:00:00
'                        10.   Parse operation failed.
'                      10.12   Parse operation failed.
'                   10.12:00     10.12:00:00

Комментарии

TryParseМетод похож на TimeSpan.Parse(String) метод, за исключением того, что он не создает исключение, если преобразование завершается неудачей.

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

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

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

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

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

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

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

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

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", value);
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
Dim value As String = "000000006"
Dim interval As TimeSpan
If TimeSpan.TryParse(value, interval) Then
   Console.WriteLine("{0} --> {1}", value, interval)
Else
   Console.WriteLine("Unable to parse '{0}'", value)
End If
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
' Output from .NET Framework 4:
'       Unable to parse '000000006'

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

TryParse(String, IFormatProvider, TimeSpan)

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

public:
 static bool TryParse(System::String ^ input, IFormatProvider ^ formatProvider, [Runtime::InteropServices::Out] TimeSpan % result);
public static bool TryParse (string input, IFormatProvider formatProvider, out TimeSpan result);
public static bool TryParse (string? input, IFormatProvider? formatProvider, out TimeSpan result);
static member TryParse : string * IFormatProvider * TimeSpan -> bool
Public Shared Function TryParse (input As String, formatProvider As IFormatProvider, ByRef result As TimeSpan) As Boolean

Параметры

input
String

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

formatProvider
IFormatProvider

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

result
TimeSpan

После возврата из этого метода содержит объект, представляющий интервал времени, заданный в параметре input, или значение Zero, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр input успешно преобразован; в противном случае — значение false. Эта операция возвращает значение false, если параметр input имеет значение null или Empty, либо его формат недопустим, либо он представляет интервал времени, меньший MinValue или больший MaxValue, либо минимум один из его компонентов — количество дней, часов, минут или секунд — находится вне допустимого диапазона.

Примеры

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

using System;
using System.Globalization;

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)
         {
            TimeSpan interval = new TimeSpan();
            if (TimeSpan.TryParse(value, culture, out interval))
               Console.Write("{0,20}", interval.ToString("c"));
            else
               Console.Write("{0,20}", "Unable to Parse");
         }
         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     Unable to Parse  6.12:14:45.3448000
//    6:12:14:45,3448       Unable to Parse  6.12:14:45.3448000     Unable to Parse
//    6:34:14:45            Unable to Parse     Unable to Parse     Unable to Parse
Imports System.Globalization

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
            Dim interval As New TimeSpan()
            If TimeSpan.TryParse(value, culture, interval) Then
               Console.Write("{0,20}", interval.ToString("c"))
            Else
               Console.Write("{0,20}", "Unable to Parse")
            End If     
         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     Unable to Parse  6.12:14:45.3448000
'    6:12:14:45,3448       Unable to Parse  6.12:14:45.3448000     Unable to Parse
'    6:34:14:45            Unable to Parse     Unable to Parse     Unable to Parse

Комментарии

TryParse(String, IFormatProvider, TimeSpan)Метод похож на Parse(String, IFormatProvider) метод, за исключением того, что он не создает исключение, если преобразование завершается неудачей.

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

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

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

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

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

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

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

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

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

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

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

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

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

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", value);
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
Dim value As String = "000000006"
Dim interval As TimeSpan
If TimeSpan.TryParse(value, interval) Then
   Console.WriteLine("{0} --> {1}", value, interval)
Else
   Console.WriteLine("Unable to parse '{0}'", value)
End If
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
' Output from .NET Framework 4:
'       Unable to parse '000000006'

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