Compartilhar via


Cadeias de caracteres de formato TimeSpan padrão

Uma cadeia de caracteres de formato de TimeSpan padrão usa um especificador de formato único para definir a representação de texto de um valor TimeSpan resultante de uma operação de formatação. Qualquer cadeia de caracteres de formato que contenha mais de um caractere, incluindo espaço em branco, é interpretada como uma cadeia de caracteres de formato TimeSpan personalizada. Para obter mais informações, consulte cadeias de caracteres de formato TimeSpan personalizado.

As representações de cadeia de caracteres de valores TimeSpan são produzidas por chamadas para as sobrecargas do método TimeSpan.ToString, bem como por métodos que dão suporte à formatação composta, como String.Format. Para obter mais informações, consulte tipos de formatação e de formatação composta. O exemplo a seguir ilustra o uso de cadeias de caracteres de formato padrão em operações de formatação.

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: {duration:c}");
   }
}
// The example displays the following output:
//       Time of Travel: 1.12:24:02
//       Time of Travel: 1.12:24:02
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

As cadeias de caracteres de formato de TimeSpan padrão também são usadas pelos métodos TimeSpan.ParseExact e TimeSpan.TryParseExact para definir o formato necessário de cadeias de caracteres de entrada para operações de análise. (A análise converte a representação de cadeia de caracteres de um valor nesse valor.) O exemplo a seguir ilustra o uso de cadeias de caracteres de formato padrão em operações de análise.

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 '{value}' to {interval}");
      }
      catch (FormatException) {
         Console.WriteLine($"{value}: Bad Format");
      }
      catch (OverflowException) {
         Console.WriteLine($"{value}: Out of Range");
      }

      if (TimeSpan.TryParseExact(value, "c", null, out interval))
         Console.WriteLine($"Converted '{value}' to {interval}");
      else
         Console.WriteLine($"Unable to convert {value} to a time interval.");
   }
}
// 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
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

A tabela a seguir lista os especificadores de formato de intervalo de tempo padrão.

Especificador de formato Nome Descrição Exemplos
"c" Formato constante (invariável) Esse especificador não diferencia a cultura. Ele assume o formulário [-][d'.']hh':'mm':'ss['.'fffffff].

(As cadeias de caracteres de formato "t" e "T" produzem os mesmos resultados.)

Mais informações: o especificador de formato constante ("c").
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" Formato curto geral Esse especificador gera apenas o que é necessário. Ele diferencia a cultura e assume o formulário [-][d':']h':'mm':'ss[.FFFFFFF].

Mais informações: o especificador de formato geral curto ("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" Formato longo geral Esse especificador sempre gera dias e sete dígitos fracionários. Ele diferencia a cultura e assume o formulário [-]d':'hh':'mm':'ss.fffffff.

Mais informações: o especificador de formato Geral Longo ("G").
New TimeSpan(18, 30, 0) -> 0:18:30:00.00000000 (en-US)

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

Especificador de formato constante ("c")

O especificador de formato "c" retorna a representação de cadeia de caracteres de um valor TimeSpan no seguinte formulário:

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

Elementos em colchetes ([ e ]) são opcionais. O período (.) e dois-pontos (:) são símbolos literais. A tabela a seguir descreve os elementos restantes.

Elemento Descrição
- Um sinal negativo opcional, que indica um intervalo de tempo negativo.
d O número opcional de dias, sem zeros à esquerda.
hh O número de horas, que varia de "00" a "23".
mm O número de minutos, que varia de "00" a "59".
ss O número de segundos, que varia de "0" a "59".
fffffff A parte fracionária opcional de um segundo. Seu valor pode variar de "0000001" (um tique, ou um décimo milionésimo de segundo) a "9999999" (9.999.999 milionésimos de milionésimos de segundo, ou um segundo a menos um tique).

Ao contrário dos especificadores de formato "g" e "G", o especificador de formato "c" não diferencia a cultura. Ele produz a representação de cadeia de caracteres de um valor TimeSpan invariável e que é comum a versões anteriores ao .NET Framework 4. "c" é o padrão TimeSpan cadeia de caracteres de formato; o método TimeSpan.ToString() formata um valor de intervalo de tempo usando a cadeia de caracteres de formato "c".

Observação

TimeSpan também dá suporte às cadeias de caracteres de formato padrão "t" e "T", que são idênticas no comportamento da cadeia de caracteres de formato padrão "c".

O exemplo a seguir cria uma instância de dois objetos TimeSpan, usa-os para executar operações aritméticas e exibe o resultado. Em cada caso, ele usa a formatação composta para exibir o valor TimeSpan usando o especificador de formato "c".

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($"{interval1:c} - {interval2:c} = {interval1 - interval2:c}");
      Console.WriteLine($"{interval1:c} + {interval2:c} = {interval1 + interval2:c}");

      interval1 = new TimeSpan(0, 0, 1, 14, 365);
      interval2 = TimeSpan.FromTicks(2143756);
      Console.WriteLine($"{interval1:c} + {interval2:c} = {interval1 + interval2:c}");
   }
}
// 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
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

O especificador de formato Curto Geral ("g")

O especificador de formato "g" TimeSpan retorna a representação de cadeia de caracteres de um valor TimeSpan em uma forma compacta, incluindo apenas os elementos necessários. Ele tem o seguinte formulário:

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

Elementos em colchetes ([ e ]) são opcionais. O dois-pontos (:) é um símbolo literal. A tabela a seguir descreve os elementos restantes.

Elemento Descrição
- Um sinal negativo opcional, que indica um intervalo de tempo negativo.
d O número opcional de dias, sem zeros à esquerda.
h O número de horas, que varia de "0" a "23", sem zeros à esquerda.
mm O número de minutos, que varia de "00" a "59".
ss O número de segundos, que varia de "00" a "59".
. O separador de segundos fracionários. É equivalente à propriedade NumberDecimalSeparator da cultura especificada sem substituições de usuário.
FFFFFFF Os segundos fracionários. O menor número possível de dígitos é exibido.

Como o especificador de formato "G", o especificador de formato "g" é localizado. Seu separador de segundos fracionários baseia-se na cultura atual ou na propriedade NumberDecimalSeparator de uma cultura especificada.

O exemplo a seguir cria uma instância de dois objetos TimeSpan, usa-os para executar operações aritméticas e exibe o resultado. Em cada caso, ele usa a formatação composta para exibir o valor TimeSpan usando o especificador de formato "g". Além disso, formata o valor TimeSpan usando as convenções de formatação da cultura do sistema atual (que, neste caso, é inglês - Estados Unidos ou en-US) e a cultura francesa - França (fr-FR).

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($"{interval1:g} - {interval2:g} = {interval1 - interval2:g}");
      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($"{interval1:g} + {interval2:g} = {interval1 + interval2:g}");
   }
}
// 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
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

Especificador de formato Geral Longo ("G")

O especificador de formato de TimeSpan "G" retorna a representação de cadeia de caracteres de um valor TimeSpan em uma forma longa que sempre inclui dias e segundos fracionários. A cadeia de caracteres resultante do especificador de formato padrão "G" tem o seguinte formulário:

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

Elementos em colchetes ([ e ]) são opcionais. O dois-pontos (:) é um símbolo literal. A tabela a seguir descreve os elementos restantes.

Elemento Descrição
- Um sinal negativo opcional, que indica um intervalo de tempo negativo.
d O número de dias, sem zeros à esquerda.
hh O número de horas, que varia de "00" a "23".
mm O número de minutos, que varia de "00" a "59".
ss O número de segundos, que varia de "00" a "59".
. O separador de segundos fracionários. É equivalente à propriedade NumberDecimalSeparator da cultura especificada sem substituições de usuário.
fffffff Os segundos fracionários.

Como o especificador de formato "G", o especificador de formato "g" é localizado. Seu separador de segundos fracionários baseia-se na cultura atual ou na propriedade NumberDecimalSeparator de uma cultura especificada.

O exemplo a seguir cria uma instância de dois objetos TimeSpan, usa-os para executar operações aritméticas e exibe o resultado. Em cada caso, ele usa a formatação composta para exibir o valor TimeSpan usando o especificador de formato "G". Além disso, formata o valor TimeSpan usando as convenções de formatação da cultura do sistema atual (que, neste caso, é inglês - Estados Unidos ou en-US) e a cultura francesa - França (fr-FR).

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($"{interval1:G} - {interval2:G} = {interval1 - interval2:G}");
      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($"{interval1:G} + {interval2:G} = {interval1 + interval2:G}");
   }
}
// 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
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

Consulte também