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
Строка, которая указывает преобразуемый интервал времени.
Возвращаемое значение
Интервал времени, соответствующий параметру 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
Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.
Возвращаемое значение
Интервал времени, соответствующий параметру 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
Объект, предоставляющий сведения о форматировании для определенного языка и региональных параметров.
Возвращаемое значение
Интервал времени, соответствующий параметру 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