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, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение 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, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение 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, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение 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, если преобразование завершилось неудачей. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение 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'