Методы 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]

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

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

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

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

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

Заметки для вызывающих абонентов

В некоторых случаях, когда компонент интервала времени в строке для анализа содержит более семи цифр, синтаксический анализ операций, которые успешно и возвращены true в платформа .NET Framework 3.5 и более ранних версиях, могут завершиться ошибкой и вернуться false в платформа .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//
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'