Поделиться через


Строки стандартного формата TimeSpan

Стандартная строка формата TimeSpan использует единственный описатель формата для задания текстового представления значения TimeSpan, которое является результатом операции форматирования. Любая строка формата, содержащая несколько символов, включая пробелы, интерпретируется как строка настраиваемого формата TimeSpan. Дополнительные сведения см. в разделе Строки пользовательского формата TimeSpan.

Строковые представления значений TimeSpan создаются вызовами перегрузок метода TimeSpan.ToString, а также методами, поддерживающими составное форматирование, такими как String.Format. Дополнительные сведения см. в разделах Типы форматирования и Составное форматирование. В следующем примере демонстрируется использование строк стандартного формата в операциях форматирования.

Module Example
   Public Sub Main()
      Dim duration As New TimeSpan(1, 12, 23, 62)
      Dim output As String = "Time of Travel: " + duration.ToString("c")
      Console.WriteLine(output)

      Console.WriteLine("Time of Travel: {0:c}", duration) 
   End Sub
End Module
' The example displays the following output:
'       Time of Travel: 1.12:24:02
'       Time of Travel: 1.12:24:02
using System;

public class Example
{
   public static void Main()
   {
      TimeSpan duration = new TimeSpan(1, 12, 23, 62);
      string output = "Time of Travel: " + duration.ToString("c");
      Console.WriteLine(output);

      Console.WriteLine("Time of Travel: {0:c}", duration); 
   }
}
// The example displays the following output:
//       Time of Travel: 1.12:24:02
//       Time of Travel: 1.12:24:02

Строки стандартного формата TimeSpan также используются методами TimeSpan.ParseExact и TimeSpan.TryParseExact, для определения требуемого формата входных строк для операций анализа. (Анализ преобразует строковое представление значения в это значение). В следующем примере показано использование строк стандартного формата в операциях анализа.

Module Example
   Public Sub Main()
      Dim value As String = "1.03:14:56.1667"
      Dim interval As TimeSpan
      Try
         interval = TimeSpan.ParseExact(value, "c", Nothing)
         Console.WriteLine("Converted '{0}' to {1}", value, interval)
      Catch e As FormatException
         Console.WriteLine("{0}: Bad Format", value)
      Catch e As OverflowException
         Console.WriteLine("{0}: Out of Range", value)
      End Try

      If TimeSpan.TryParseExact(value, "c", Nothing, interval) Then
         Console.WriteLine("Converted '{0}' to {1}", value, interval)
      Else
         Console.WriteLine("Unable to convert {0} to a time interval.", 
                           value)
      End If                
   End Sub
End Module
' The example displays the following output:
'       Converted '1.03:14:56.1667' to 1.03:14:56.1667000
'       Converted '1.03:14:56.1667' to 1.03:14:56.1667000
using System;

public class Example
{
   public static void Main()
   {
      string value = "1.03:14:56.1667";
      TimeSpan interval;
      try {
         interval = TimeSpan.ParseExact(value, "c", null);
         Console.WriteLine("Converted '{0}' to {1}", value, interval);
      }   
      catch (FormatException) {
         Console.WriteLine("{0}: Bad Format", value);
      }   
      catch (OverflowException) {
         Console.WriteLine("{0}: Out of Range", value);
      }

      if (TimeSpan.TryParseExact(value, "c", null, out interval))
         Console.WriteLine("Converted '{0}' to {1}", value, interval);
      else
         Console.WriteLine("Unable to convert {0} to a time interval.", 
                           value);
   }
}
// The example displays the following output:
//       Converted '1.03:14:56.1667' to 1.03:14:56.1667000
//       Converted '1.03:14:56.1667' to 1.03:14:56.1667000

В следующей таблице перечислены стандартные описатели форматов интервалов времени.

Описатель формата

Имя

Описание

Примеры

"c"

Постоянный (инвариантный) формат

Этот описатель не учитывает язык и региональные параметры. Он принимает вид [-][d’.’]hh’:’mm’:’ss[‘.’fffffff].

(Строки формата "t" и "T" дают одинаковые результаты).

Дополнительные сведения см. в разделе Постоянный ("с") описатель формата.

TimeSpan.Zero -> 00:00:00

New TimeSpan(0, 0, 30, 0) -> 00:30:00

New TimeSpan(3, 17, 25, 30, 500) -> 3.17:25:30.5000000

"g"

Общий короткий формат

Этот описатель выводит только необходимое. Он учитывает язык и региональные параметры и принимает форму [-][d’:’]h’:’mm’:’ss[.FFFFFFF].

Дополнительные сведения см. в разделе Описатель общего краткого формата ("g").

New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50.5 (en-US)

New TimeSpan(1, 3, 16, 50, 500) -> 1:3:16:50,5 (fr-FR)

New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50.599 (en-US)

New TimeSpan(1, 3, 16, 50, 599) -> 1:3:16:50,599 (fr-FR)

"G"

Общий длинный формат

Этот описатель всегда отображает дни и семь цифр дробной части. Он учитывает язык и региональные параметры и принимает форму [-]d’:’hh’:’mm’:’ss.fffffff.

Дополнительные сведения см. в разделе Описатель общего длинного формата ("G").

New TimeSpan(18, 30, 0) -> 0:18:30:00.0000000 (en-US)

New TimeSpan(18, 30, 0) -> 0:18:30:00,0000000 (fr-FR)

Описатель постоянного ("c") формата

Описатель формата "c" возвращает строковое представление значения TimeSpan в следующей форме:

[-][d.]hh:mm:ss[.fffffff]

Элементы в квадратных скобках ("[" и "]") являются необязательными. Точка (.) и двоеточие (:) являются литеральными символами. Оставшиеся элементы описаны в таблице ниже.

Элемент

Описание

-

Необязательный знак минуса, который указывает на отрицательный интервал времени.

d

Необязательное число дней, без предшествующих нулей.

hh

Количество часов в диапазоне от "00" до "23".

mm

Число минут в диапазоне от "00" до "59".

ss

Число секунд в диапазоне от "0" до "59".

fffffff

Необязательное число миллисекунд в диапазоне от "0010000" до "9990000".

В отличие от описателей формата "g" и "G", описатель формата "c" не учитывает язык и региональные параметры. Он создает строковое представление значения TimeSpan, которое является инвариантным и общим для всех предыдущих версий .NET Framework вплоть до .NET Framework 4. " c" является строкой формата по умолчанию TimeSpan; метод TimeSpan.ToString() форматирует значение временного интервала, используя строку формата "c".

ПримечаниеПримечание

TimeSpan также поддерживает строки стандартного формата "t" и "T", которые идентичны поведению строки стандартного формата "c".

Приведенный ниже пример создает два объекта TimeSpan, использует их для выполнения арифметических операций и отображает результат. В каждом случае используется составное форматирование для отображения значения TimeSpan за счет использования описателя формата "c".

Module Example
   Public Sub Main()
      Dim interval1, interval2 As TimeSpan
      interval1 = New TimeSpan(7, 45, 16)
      interval2 = New TimeSpan(18, 12, 38)

      Console.WriteLine("{0:c} - {1:c} = {2:c}", interval1, 
                        interval2, interval1 - interval2)
      Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1, 
                        interval2, interval1 + interval2)

      interval1 = New TimeSpan(0, 0, 1, 14, 365)
      interval2 = TimeSpan.FromTicks(2143756)      
      Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1, 
                        interval2, interval1 + interval2)
   End Sub
End Module
' The example displays the following output:
'       07:45:16 - 18:12:38 = -10:27:22
'       07:45:16 + 18:12:38 = 1.01:57:54
'       00:01:14.3650000 + 00:00:00.2143756 = 00:01:14.5793756
using System;

public class Example
{
   public static void Main()
   {
      TimeSpan interval1, interval2;
      interval1 = new TimeSpan(7, 45, 16);
      interval2 = new TimeSpan(18, 12, 38);

      Console.WriteLine("{0:c} - {1:c} = {2:c}", interval1, 
                        interval2, interval1 - interval2);
      Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1, 
                        interval2, interval1 + interval2);

      interval1 = new TimeSpan(0, 0, 1, 14, 365);
      interval2 = TimeSpan.FromTicks(2143756);  
      Console.WriteLine("{0:c} + {1:c} = {2:c}", interval1, 
                        interval2, interval1 + interval2);
   }
}
// The example displays the following output:
//       07:45:16 - 18:12:38 = -10:27:22
//       07:45:16 + 18:12:38 = 1.01:57:54
//       00:01:14.3650000 + 00:00:00.2143756 = 00:01:14.5793756

К таблице

Описатель общего краткого формата ("g")

Описатель формата "g" TimeSpan возвращает строковое представление значения TimeSpan в компактной форме путем включения только необходимых элементов. Она имеет следующую форму.

[-][d:]h:mm:ss[.FFFFFFF]

Элементы в квадратных скобках ("[" и "]") являются необязательными. Двоеточие (:) является литеральным символом. Оставшиеся элементы описаны в таблице ниже.

Элемент

Описание

-

Необязательный знак минуса, который указывает на отрицательный интервал времени.

d

Необязательное число дней, без предшествующих нулей.

h

Число часов в диапазоне от "0" до "23" без предшествующих нулей.

mm

Число минут в диапазоне от "00" до "59".

ss

Число секунд в диапазоне от "00" до "59".

.

Разделитель долей секунд. Это эквивалентно указанному свойству NumberDecimalSeparator языка и региональных параметров без переопределения пользователем.

FFFFFFF

Дробные части секунд. Отображается несколько цифр (сколько возможно).

Аналогично описателю формата "G", описатель формата "g" является локализованным. Разделитель дробных частей секунд зависит или от текущего языка и региональных параметров, или от указанного свойства NumberDecimalSeparator языка и региональных параметров.

Приведенный ниже пример создает два объекта TimeSpan, использует их для выполнения арифметических операций и отображает результат. В каждом случае используется составное форматирование для отображения значения TimeSpan за счет использования описателя формата "g". Кроме того, он форматирует значение TimeSpan, используя правила форматирования языка и текущих региональных параметров системы (в данном случае English - United States или en-US), и языка и текущих региональных параметров French - France (fr-FR).

Imports System.Globalization

Module Example
   Public Sub Main()
      Dim interval1, interval2 As TimeSpan
      interval1 = New TimeSpan(7, 45, 16)
      interval2 = New TimeSpan(18, 12, 38)

      Console.WriteLine("{0:g} - {1:g} = {2:g}", interval1, 
                        interval2, interval1 - interval2)
      Console.WriteLine(String.Format(New CultureInfo("fr-FR"), 
                        "{0:g} + {1:g} = {2:g}", interval1, 
                        interval2, interval1 + interval2))

      interval1 = New TimeSpan(0, 0, 1, 14, 36)
      interval2 = TimeSpan.FromTicks(2143756)      
      Console.WriteLine("{0:g} + {1:g} = {2:g}", interval1, 
                        interval2, interval1 + interval2)
   End Sub
End Module
' The example displays the following output:
'       7:45:16 - 18:12:38 = -10:27:22
'       7:45:16 + 18:12:38 = 1:1:57:54
'       0:01:14.036 + 0:00:00.2143756 = 0:01:14.2503756
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      TimeSpan interval1, interval2;
      interval1 = new TimeSpan(7, 45, 16);
      interval2 = new TimeSpan(18, 12, 38);

      Console.WriteLine("{0:g} - {1:g} = {2:g}", interval1, 
                        interval2, interval1 - interval2);
      Console.WriteLine(String.Format(new CultureInfo("fr-FR"), 
                        "{0:g} + {1:g} = {2:g}", interval1, 
                        interval2, interval1 + interval2));

      interval1 = new TimeSpan(0, 0, 1, 14, 36);
      interval2 = TimeSpan.FromTicks(2143756);      
      Console.WriteLine("{0:g} + {1:g} = {2:g}", interval1, 
                        interval2, interval1 + interval2);
   }
}
// The example displays the following output:
//       7:45:16 - 18:12:38 = -10:27:22
//       7:45:16 + 18:12:38 = 1:1:57:54
//       0:01:14.036 + 0:00:00.2143756 = 0:01:14.2503756

К таблице

Описатель общего длинного формата ("G")

Описатель формата "G" TimeSpan возвращает строковое представление значения TimeSpan в длинной форме, которая включает и дни, и дробные части секунд. Строка, которая является результатом описателя стандартного формата "G", имеет следующую форму:

[-]d:hh:mm:ss.fffffff

Элементы в квадратных скобках ("[" и "]") являются необязательными. Двоеточие (:) является литеральным символом. Оставшиеся элементы описаны в таблице ниже.

Элемент

Описание

-

Необязательный знак минуса, который указывает на отрицательный интервал времени.

d

Число дней, без предшествующих нулей.

hh

Количество часов в диапазоне от "00" до "23".

mm

Число минут в диапазоне от "00" до "59".

ss

Число секунд в диапазоне от "00" до "59".

.

Разделитель долей секунд. Это эквивалентно указанному свойству NumberDecimalSeparator языка и региональных параметров без переопределения пользователем.

fffffff

Дробные части секунд.

Аналогично описателю формата "G", описатель формата "g" является локализованным. Разделитель дробных частей секунд зависит или от текущего языка и региональных параметров, или от указанного свойства NumberDecimalSeparator языка и региональных параметров.

Приведенный ниже пример создает два объекта TimeSpan, использует их для выполнения арифметических операций и отображает результат. В каждом случае используется составное форматирование для отображения значения TimeSpan за счет использования описателя формата "G". Кроме того, он форматирует значение TimeSpan, используя правила форматирования языка и текущих региональных параметров системы (в данном случае English - United States или en-US), и языка и текущих региональных параметров French - France (fr-FR).

Imports System.Globalization

Module Example
   Public Sub Main()
      Dim interval1, interval2 As TimeSpan
      interval1 = New TimeSpan(7, 45, 16)
      interval2 = New TimeSpan(18, 12, 38)

      Console.WriteLine("{0:G} - {1:G} = {2:G}", interval1, 
                        interval2, interval1 - interval2)
      Console.WriteLine(String.Format(New CultureInfo("fr-FR"), 
                        "{0:G} + {1:G} = {2:G}", interval1, 
                        interval2, interval1 + interval2))

      interval1 = New TimeSpan(0, 0, 1, 14, 36)
      interval2 = TimeSpan.FromTicks(2143756)      
      Console.WriteLine("{0:G} + {1:G} = {2:G}", interval1, 
                        interval2, interval1 + interval2)
   End Sub
End Module
' The example displays the following output:
'       0:07:45:16.0000000 - 0:18:12:38.0000000 = -0:10:27:22.0000000
'       0:07:45:16,0000000 + 0:18:12:38,0000000 = 1:01:57:54,0000000
'       0:00:01:14.0360000 + 0:00:00:00.2143756 = 0:00:01:14.2503756
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      TimeSpan interval1, interval2;
      interval1 = new TimeSpan(7, 45, 16);
      interval2 = new TimeSpan(18, 12, 38);

      Console.WriteLine("{0:G} - {1:G} = {2:G}", interval1, 
                        interval2, interval1 - interval2);
      Console.WriteLine(String.Format(new CultureInfo("fr-FR"), 
                        "{0:G} + {1:G} = {2:G}", interval1, 
                        interval2, interval1 + interval2));

      interval1 = new TimeSpan(0, 0, 1, 14, 36);
      interval2 = TimeSpan.FromTicks(2143756);      
      Console.WriteLine("{0:G} + {1:G} = {2:G}", interval1, 
                        interval2, interval1 + interval2);
   }
}
// The example displays the following output:
//       0:07:45:16.0000000 - 0:18:12:38.0000000 = -0:10:27:22.0000000
//       0:07:45:16,0000000 + 0:18:12:38,0000000 = 1:01:57:54,0000000
//       0:00:01:14.0360000 + 0:00:00:00.2143756 = 0:00:01:14.2503756

К таблице

См. также

Основные понятия

Типы форматирования

Другие ресурсы

Строки пользовательского формата TimeSpan

Разбор строк