TimeSpan.Parse Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует строковое представление интервала времени в его TimeSpan эквивалент.
Перегрузки
| Имя | Описание |
|---|---|
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Преобразует представление интервала интервала в его TimeSpan эквивалент, используя указанные сведения о формате, зависящий от языка и региональных параметров. |
| Parse(String, IFormatProvider) |
Преобразует строковое представление интервала времени в его TimeSpan эквивалент с помощью указанных сведений о формате, зависящих от языка и региональных параметров. |
| Parse(String) |
Преобразует строковое представление интервала времени в его TimeSpan эквивалент. |
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
Преобразует представление интервала интервала в его 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.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
Преобразует строковое представление интервала времени в его TimeSpan эквивалент с помощью указанных сведений о формате, зависящих от языка и региональных параметров.
public:
static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider);
public:
static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider) = IParsable<TimeSpan>::Parse;
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 представляет число, которое меньше TimeSpan.MinValue или больше TimeSpan.MaxValue.
–или–
По крайней мере один из дней, часов, минут или секунд компонентов в input находится за пределами допустимого диапазона.
Примеры
В следующем примере определяется массив объектов CultureInfo и каждый объект в вызовах метода Parse(String, IFormatProvider) используется для анализа элементов в массиве строк. В примере показано, как соглашения определенного языка и региональных параметров влияют на операцию форматирования.
using System;
using System.Globalization;
using System.Text.RegularExpressions;
public class Example2
{
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
open System
open System.Globalization
open System.Text.RegularExpressions
let 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" |]
let cultures =
[| CultureInfo "en-US"
CultureInfo "ru-RU"
CultureInfo.InvariantCulture |]
let mutable header = $"""{"String",-17}"""
for culture in cultures do
header <- header +
if culture.Equals CultureInfo.InvariantCulture then
$"""{"Invariant",20}"""
else
$"{culture.Name,20}"
printfn $"{header}\m"
for value in values do
printf $"{value,-17}"
for culture in cultures do
try
let ts = TimeSpan.Parse(value, culture)
printf $"{ts,20:c}"
with
| :? FormatException ->
printf $"""{"Bad Format",20}"""
| :? OverflowException ->
printf $"""{"Overflow",20}"""
printfn ""
// 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
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
' 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 с помощью каждого из форматов языка и региональных параметров для языка и региональных параметров, заданных formatProvider.
Параметр formatProvider — это реализация, которая предоставляет сведения о языке и региональных параметрах IFormatProvider, влияющих на формат возвращаемой строки. Параметр formatProvider может быть любым из следующих значений:
- Объект CultureInfo, представляющий культуру, соглашения о форматировании которой должны отражаться в возвращаемой строке. Объект, DateTimeFormatInfo возвращаемый свойством CultureInfo.DateTimeFormat , определяет форматирование возвращаемой строки.
- DateTimeFormatInfo Объект, определяющий форматирование возвращаемой строки.
- Объект, реализующий интерфейс IFormatProvider, разработанный по индивидуальному заказу. Его IFormatProvider.GetFormat метод возвращает DateTimeFormatInfo объект, предоставляющий сведения о форматировании.
Если formatProvider — это null, используется объект DateTimeFormatInfo, связанный с текущей культурой.
Входная строка Parse для методов содержит спецификацию интервала времени в форме:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Один выбор из списка альтернативных вариантов, заключенных в фигурные скобки ({ и }) и разделенный вертикальными полосами (|) является обязательным. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| ws | Необязательный пробел. |
| - | Необязательный знак минуса, указывающий на отрицательный элемент TimeSpan. |
| дн. | Дни, от 0 до 10675199. |
| . | Символ, учитывающий культурные особенности, который отделяет дни от часов. В инвариантном формате используется символ точки ("."). |
| чч | Часы от 0 до 23. |
| : | Символ разделителя времени, учитывающий культурные особенности. В инвариантном формате используется символ двоеточия (":"). |
| миллиметр | Минуты, от 0 до 59. |
| ss | Необязательные секунды, от 0 до 59. |
| . | Символ, учитывающий культурные особенности, который отделяет секунды от дробных секунд. В инвариантном формате используется символ точки ("."). |
| ff | Необязательные дробные секунды, состоящие из одной до семи десятичных цифр. |
Если входная строка не является только значением дня, она должна содержать часы и компоненты минут; другие компоненты являются необязательными. Если они присутствуют, значения каждого компонента времени должны находиться в указанном диапазоне. Например, значение hh, компонент часов, должен быть в диапазоне от 0 до 23. Из-за этого передача значения "23:00:00" в метод Parse возвращает интервал времени в 23 часа. С другой стороны, передача "24:00:00" возвращает интервал времени в 24 дня. Поскольку "24" находится вне диапазона компонента часов, оно интерпретируется как компонент дней.
Компоненты входной строки должны совместно указывать интервал времени, который больше или равен TimeSpan.MinValue и меньше или равен TimeSpan.MaxValue.
Метод Parse(String) пытается проанализировать входную строку, используя каждый из форматов культуры для текущей культуры.
Применяется к
Parse(String)
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
- Исходный код:
- TimeSpan.cs
Преобразует строковое представление интервала времени в его 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 представляет число, которое меньше TimeSpan.MinValue или больше TimeSpan.MaxValue.
–или–
По крайней мере один из дней, часов, минут или секунд компонентов находится за пределами допустимого диапазона.
Примеры
В следующем примере метод Parse используется для преобразования каждого элемента в массив строк в значение TimeSpan. Он изменяет текущую культуру системы на хорватский - Хорватию ("hr-HR") и английский - Соединенные Штаты ("en-US") для иллюстрации того, как текущая система культуры влияет на операцию синтаксического анализа.
using System;
using System.Globalization;
using System.Threading;
public class Example1
{
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
open System
open System.Globalization
open System.Threading
let 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" |]
let cultureNames = [| "hr-HR"; "en-US" |]
// Change the current culture.
for cultureName in cultureNames do
Thread.CurrentThread.CurrentCulture <- CultureInfo cultureName
printfn $"Current Culture: {Thread.CurrentThread.CurrentCulture.Name}"
for value in values do
try
let ts = TimeSpan.Parse value
printfn $"{value} --> {ts:c}"
with
| :? FormatException ->
printfn $"{value}: Bad Format"
| :? OverflowException ->
printfn $"{value}: Overflow"
printfn ""
// 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
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
' 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
Комментарии
Входная строка Parse для методов содержит спецификацию интервала времени в форме:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Один выбор из списка альтернативных вариантов, заключенных в фигурные скобки ({ и }) и разделенный вертикальными полосами (|) является обязательным. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| ws | Необязательный пробел. |
| - | Необязательный знак минуса, указывающий на отрицательный элемент TimeSpan. |
| дн. | Дни, от 0 до 10675199. |
| . | Символ, учитывающий культурные особенности, который отделяет дни от часов. В инвариантном формате используется символ точки ("."). |
| чч | Часы от 0 до 23. |
| : | Символ разделителя времени, учитывающий культурные особенности. В инвариантном формате используется символ двоеточия (":"). |
| миллиметр | Минуты, от 0 до 59. |
| ss | Необязательные секунды, от 0 до 59. |
| . | Символ, учитывающий культурные особенности, который отделяет секунды от дробных секунд. В инвариантном формате используется символ точки ("."). |
| ff | Необязательные дробные секунды, состоящие из одной до семи десятичных цифр. |
Если входная строка не является только значением дня, она должна содержать часы и компоненты минут; другие компоненты являются необязательными. Если они присутствуют, значения каждого компонента времени должны находиться в указанном диапазоне. Например, значение hh, компонент часов, должен быть в диапазоне от 0 до 23. Из-за этого передача значения "23:00:00" в метод Parse возвращает интервал времени в 23 часа. С другой стороны, передача "24:00:00" возвращает интервал времени в 24 дня. Поскольку "24" находится вне диапазона компонента часов, оно интерпретируется как компонент дней.
Компоненты входной строки должны совместно указывать интервал времени, который больше или равен TimeSpan.MinValue и меньше или равен TimeSpan.MaxValue.
Метод Parse(String) пытается проанализировать входную строку, используя каждый из форматов культуры для текущей культуры.