Cadenas de formato TimeSpan estándar

Una cadena de formato TimeSpan estándar usa un único especificador de formato para definir la representación de texto de un valor TimeSpan que resulta de una operación de formato. Cualquier cadena de formato que contenga más de un carácter, incluido un espacio en blanco, se interpreta como una cadena de formato TimeSpan personalizado. Para obtener más información, vea Cadenas de formato TimeSpan personalizado.

Las representaciones de cadena de los valores TimeSpan se generan mediante llamadas a las sobrecargas del método TimeSpan.ToString, y también mediante métodos que admiten formatos compuestos, como String.Format. Para obtener más información, vea Aplicar formato a tipos y Formatos compuestos. En el siguiente ejemplo, se muestra el uso de cadenas de formato estándar en operaciones de formato.

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

Los métodos TimeSpan.ParseExact y TimeSpan.TryParseExact también usan cadenas de formato TimeSpan estándar para definir el formato que deben tener las cadenas de entrada de las operaciones de análisis. (Estas operaciones convierten la representación de cadena de un valor en ese valor.) En el siguiente ejemplo, se muestra el uso de cadenas de formato estándar en operaciones de análisis.

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

En la tabla siguiente se describen los especificadores de formato de intervalo de tiempo estándar.

Especificador de formato

Nombre

Descripción

Ejemplos

"c"

Formato constante (invariable)

Este especificador no tiene en cuenta la referencia cultural. Tiene el formato [-][d’.’]hh’:’mm’:’ss[‘.’fffffff].

(Las cadenas de formato "t" y "T" generan los mismos resultados.)

Más información: 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 corto general

Este especificador solo muestra lo que se necesita. Tiene en cuenta la referencia cultural y su formato es [-][d’:’]h’:’mm’:’ss[.FFFFFFF].

Más información: Especificador de formato corto general ("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 largo general

Este especificador siempre genera días y siete dígitos fraccionarios. Tiene en cuenta la referencia cultural y su formato es [-]d’:’hh’:’mm’:’ss.fffffff.

Más información: Especificador de formato largo general ("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)

Especificador de formato constante ("c")

El especificador de formato "c" devuelve la representación de cadena de un valor TimeSpan con el siguiente formato:

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

Los elementos entre corchetes ([ y ]) son opcionales. El punto (.) y el signo de dos puntos (:) son símbolos literales. En la tabla siguiente, se describen los elementos restantes.

Elemento

Descripción

-

Signo negativo opcional, que indica un intervalo de tiempo negativo.

d

Número opcional de días, sin ceros iniciales.

hh

Número de horas, de "00" a "23".

mm

Número de minutos, de "00" a "59".

ss

Número de segundos, de "0" a "59".

fffffff

Número opcional de milisegundos, de "0010000" a "9990000".

A diferencia de los especificadores de formato "g" y "G", el especificador de formato "c" no tiene en cuenta la referencia cultural. Genera la representación de cadena de un valor TimeSpan que es invariable y común a todas las versiones de .NET Framework anteriores a .NET Framework versión 4. " c" es la cadena de formato predeterminada de TimeSpan; el método TimeSpan.ToString() da formato a un valor de intervalo de tiempo mediante la cadena de formato "c".

NotaNota

TimeSpan también admite las cadenas de formato estándar "t" y "T", que tienen el mismo comportamiento que la cadena de formato estándar "c".

En el siguiente ejemplo, se crean instancias de dos objetos TimeSpan, se usan dichas instancias para realizar operaciones aritméticas y se muestra el resultado. En ambos casos, se utiliza un formato compuesto para mostrar el valor TimeSpan con el especificador de formato "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

Volver a la tabla

Especificador de formato corto general ("g")

El especificador de formato "g" de TimeSpan devuelve la representación de cadena de un valor TimeSpan con un formato compacto ya que incluye solo los elementos necesarios. Tiene el formato siguiente:

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

Los elementos entre corchetes ([ y ]) son opcionales. El signo de dos puntos (:) es un símbolo literal. En la tabla siguiente, se describen los elementos restantes.

Elemento

Descripción

-

Signo negativo opcional, que indica un intervalo de tiempo negativo.

d

Número opcional de días, sin ceros iniciales.

h

Número de horas, de "0" a "23", sin ceros iniciales.

mm

Número de minutos, de "00" a "59".

ss

Número de segundos, de "00" a "59".

.

Separador de fracciones de segundo. Equivale a la propiedad NumberDecimalSeparator de la referencia cultural especificada sin reemplazos por parte del usuario.

FFFFFFF

Fracciones de segundo. Se muestra el menor número de dígitos posible.

Al igual que el especificador de formato "G", se localiza el especificador de formato "g". Su separador de fracciones de segundo se basa en la referencia cultural actual o en la propiedad NumberDecimalSeparator de la referencia cultural especificada.

En el siguiente ejemplo, se crean instancias de dos objetos TimeSpan, se usan dichas instancias para realizar operaciones aritméticas y se muestra el resultado. En ambos casos, se utiliza un formato compuesto para mostrar el valor TimeSpan con el especificador de formato "g". Además, da formato al valor TimeSpan según las convenciones de formato de la actual referencia cultural del sistema (en este caso, Inglés - Estados Unidos o en-US) y de la referencia cultural Francés - Francia (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

Volver a la tabla

Especificador de formato largo general ("G")

El especificador de formato "G" de TimeSpan devuelve la representación de cadena de un valor TimeSpan con un formato largo que siempre incluye los días y las fracciones de segundo. La cadena generada por el especificador de formato estándar "G" tiene el siguiente formato:

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

Los elementos entre corchetes ([ y ]) son opcionales. El signo de dos puntos (:) es un símbolo literal. En la tabla siguiente, se describen los elementos restantes.

Elemento

Descripción

-

Signo negativo opcional, que indica un intervalo de tiempo negativo.

d

Número de días, sin ceros iniciales.

hh

Número de horas, de "00" a "23".

mm

Número de minutos, de "00" a "59".

ss

Número de segundos, de "00" a "59".

.

Separador de fracciones de segundo. Equivale a la propiedad NumberDecimalSeparator de la referencia cultural especificada sin reemplazos por parte del usuario.

fffffff

Fracciones de segundo.

Al igual que el especificador de formato "G", se localiza el especificador de formato "g". Su separador de fracciones de segundo se basa en la referencia cultural actual o en la propiedad NumberDecimalSeparator de la referencia cultural especificada.

En el siguiente ejemplo, se crean instancias de dos objetos TimeSpan, se usan dichas instancias para realizar operaciones aritméticas y se muestra el resultado. En ambos casos, se utiliza un formato compuesto para mostrar el valor TimeSpan con el especificador de formato "G". Además, da formato al valor TimeSpan según las convenciones de formato de la actual referencia cultural del sistema (en este caso, Inglés - Estados Unidos o en-US) y de la referencia cultural Francés - Francia (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

Volver a la tabla

Vea también

Conceptos

Aplicar formato a tipos

Otros recursos

Cadenas de formato TimeSpan personalizado

Analizar cadenas