Cadenas de formato TimeSpan estándar
Una cadena de formato TimeSpan estándar usa un especificador de formato único para definir la representación de texto de un valor de TimeSpan resultante de una operación de formato. Cualquier cadena de formato que contenga más de un carácter, incluido el espacio en blanco, se interpreta como una cadena de formato de TimeSpan personalizada. Para obtener más información, vea cadenas de formato TimeSpan personalizadas.
Las representaciones de cadena de TimeSpan valores se generan mediante llamadas a las sobrecargas del método TimeSpan.ToString, así como por métodos que admiten formato compuesto, como String.Format. Para obtener más información, vea tipos de formato y formato compuesto. En el ejemplo siguiente se muestra el uso de cadenas de formato estándar en operaciones de formato.
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
Los métodos TimeSpan.ParseExact y TimeSpan.TryParseExact estándar usan también las cadenas de formato estándar TimeSpan para definir el formato necesario de las cadenas de entrada para las operaciones de análisis. (El análisis convierte la representación de cadena de un valor en ese valor). En el ejemplo siguiente se muestra el uso de cadenas de formato estándar en operaciones de análisis.
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
En la tabla siguiente se enumeran los especificadores de formato de intervalo de tiempo estándar.
Especificador de formato | Nombre | Descripción | Ejemplos |
---|---|---|---|
"c" | Formato constante (invariable) | Este especificador no distingue referencias culturales. Toma 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:00New TimeSpan(0, 0, 30, 0) :> 00:30:00New TimeSpan(3, 17, 25, 30, 500) :> 3.17:25:30.50000000 |
"g" | Formato corto general | Este especificador genera solo lo que se necesita. Es sensible a la referencia cultural y adopta la forma [-][d':']h':'mm':'ss[.FFFFFFF] .Más información: El 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. Es sensible a la referencia cultural y adopta la forma [-]d':'hh':'mm':'ss.fffffff .Más información: especificador de formato long 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 de la forma siguiente:
[-][d.]hh:mm:ss[.fffffff]
Los elementos entre corchetes ([ y ]) son opcionales. El punto (.) y los dos puntos (:) son símbolos literales. En la tabla siguiente se describen los elementos restantes.
Elemento | Descripción |
---|---|
- | Un signo negativo opcional, que indica un intervalo de tiempo negativo. |
d | Número opcional de días, sin ceros iniciales. |
S.S | Número de horas, que va de "00" a "23". |
mm | Número de minutos, que va de "00" a "59". |
ss | Número de segundos, que va de "0" a "59". |
fffffff | Parte fraccionaria opcional de un segundo. Su valor puede oscilar entre "0000001" (un tic o un diez millones de segundos) a "9999999" (9,999,999 diez millones de segundos o un segundo menos de un tic). |
A diferencia de los especificadores de formato "g" y "G", el especificador de formato "c" no distingue la referencia cultural. Genera la representación de cadena de un valor de TimeSpan que es invariable y que es común a las versiones anteriores a .NET Framework 4. "c" es la cadena de formato TimeSpan predeterminada; el método TimeSpan.ToString() da formato a un valor de intervalo de tiempo mediante la cadena de formato "c".
Nota:
TimeSpan también admite las cadenas de formato estándar "t" y "T", que son idénticas en comportamiento a la cadena de formato estándar "c".
En el ejemplo siguiente se crean instancias de dos objetos TimeSpan, se usan para realizar operaciones aritméticas y se muestra el resultado. En cada caso, usa formato compuesto para mostrar el valor de TimeSpan mediante el 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
Especificador de formato general corto ("g")
El especificador de formato "g" TimeSpan devuelve la representación de cadena de un valor de TimeSpan en un formato compacto incluyendo solo los elementos necesarios. Tiene el siguiente formato:
[-][d:]h:mm:ss[.FFFFFFF]
Los elementos entre corchetes ([ y ]) son opcionales. Los dos puntos (:) es un símbolo literal. En la tabla siguiente se describen los elementos restantes.
Elemento | Descripción |
---|---|
- | Un 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, que oscila entre "0" y "23", sin ceros iniciales. |
mm | Número de minutos, que va de "00" a "59". |
ss | Número de segundos, que va de "00" a "59". |
. | Separador de fracciones de segundos. Es equivalente a la propiedad NumberDecimalSeparator de la referencia cultural especificada sin invalidaciones de usuario. |
FFFFFFF | Fracciones de segundos. Se muestran tan pocos dígitos como sea posible. |
Al igual que el especificador de formato "G", el especificador de formato "g" se localiza. Su separador de fracciones de segundos se basa en la referencia cultural actual o en la propiedad NumberDecimalSeparator de una referencia cultural especificada.
En el ejemplo siguiente se crean instancias de dos objetos TimeSpan, se usan para realizar operaciones aritméticas y se muestra el resultado. En cada caso, usa formato compuesto para mostrar el valor de TimeSpan mediante el especificador de formato "g". Además, da formato al valor TimeSpan mediante las convenciones de formato de la referencia cultural del sistema actual (que, en este caso, es inglés - Estados Unidos o en-US) y la referencia cultural Francés - Francia (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 long general ("G")
El especificador de formato de TimeSpan "G" devuelve la representación de cadena de un valor TimeSpan en un formato largo que siempre incluye días y fracciones de segundos. La cadena resultante del especificador de formato estándar "G" tiene el siguiente formato:
[-]d:hh:mm:ss.fffffff
Los elementos entre corchetes ([ y ]) son opcionales. Los dos puntos (:) es un símbolo literal. En la tabla siguiente se describen los elementos restantes.
Elemento | Descripción |
---|---|
- | Un signo negativo opcional, que indica un intervalo de tiempo negativo. |
d | Número de días, sin ceros iniciales. |
S.S | Número de horas, que va de "00" a "23". |
mm | Número de minutos, que va de "00" a "59". |
ss | Número de segundos, que va de "00" a "59". |
. | Separador de fracciones de segundos. Es equivalente a la propiedad NumberDecimalSeparator de la referencia cultural especificada sin invalidaciones de usuario. |
fffffff | Fracciones de segundos. |
Al igual que el especificador de formato "G", el especificador de formato "g" se localiza. Su separador de fracciones de segundos se basa en la referencia cultural actual o en la propiedad NumberDecimalSeparator de una referencia cultural especificada.
En el ejemplo siguiente se crean instancias de dos objetos TimeSpan, se usan para realizar operaciones aritméticas y se muestra el resultado. En cada caso, usa formato compuesto para mostrar el valor de TimeSpan mediante el especificador de formato "G". Además, da formato al valor TimeSpan mediante las convenciones de formato de la referencia cultural del sistema actual (que, en este caso, es inglés - Estados Unidos o en-US) y la referencia cultural Francés - Francia (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