Поделиться через


Методы System.TimeSpan.TryParse

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Метод TryParse(System.String,System.TimeSpan@)

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

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

[ws][-]{ d | d.hh:mm[:ss[.ff]] | hh:mm[:ss[.ff]] }[ws]

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

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

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

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

TryParse(String, IFormatProvider, TimeSpan)Метод

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

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

[ws][-]{ d | d.hh:mm[:ss[.ff]] | hh:mm[:ss[.ff]] }[ws]

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

Элемент Описание
ws Необязательный пробел.
- Необязательный знак минуса, указывающий на отрицательный элемент TimeSpan.
д Дни, от 0 до 10675199.
. Символ, учитывающий культурные особенности, который отделяет дни от часов. В инвариантном формате используется символ точки (".").
Чч Часы от 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 в .NET Framework 4 и более поздних версиях. Следующий пример иллюстрирует этот сценарий:

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine($"{value} --> {interval}");
else
   Console.WriteLine($"Unable to parse '{value}'");
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
let value = "000000006"
match TimeSpan.TryParse value with
| true, interval ->
    printfn $"{value} --> {interval}"
| _ ->
    printfn $"Unable to parse '{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'