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) пытается проанализировать входную строку, используя каждый из форматов культуры для текущей культуры.

Применяется к