Condividi tramite


Stringhe di formato TimeSpan standard

Una stringa di formato standard TimeSpan usa un singolo identificatore di formato per definire la rappresentazione testuale di un TimeSpan valore risultante da un'operazione di formattazione. Le stringhe di formato contenenti più caratteri alfabetici, inclusi gli spazi vuoti, vengono interpretate come stringhe di formato TimeSpan personalizzato. Per altre informazioni, vedere Stringhe di formato TimeSpan personalizzate.

Le rappresentazione di stringa dei valori TimeSpan vengono prodotte da chiamate agli overload del metodo TimeSpan.ToString, nonché dai metodi che supportano la formattazione composita, come String.Format. Per altre informazioni, vedere Formattazione di tipi e Formattazione composita. Nell'esempio seguente viene illustrato l'utilizzo di stringhe di formato standard nelle operazioni di formattazione.

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
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

Le stringhe di formato TimeSpan standard sono usate anche dai metodi TimeSpan.ParseExact e TimeSpan.TryParseExact per definire il formato richieste delle stringhe di input per le operazioni di analisi L'analisi converte la rappresentazione di stringa di un valore in tale valore. Nell'esempio seguente viene illustrato l'uso di stringhe di formato standard nelle operazioni di analisi.

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
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

Nella tabella seguente sono elencati gli identificatori di formato di intervallo di tempo standard.

Identificatore di formato Nome Descrizione Esempi
"c" Formato di costante (invariante) Questo identificatore non è dipendente dalle impostazioni cultura. Assume il formato [-][d'.']hh':'mm':'ss['.'fffffff]

(le stringhe di formato "t" e "T" producono gli stessi risultati).

Altre informazioni: Identificatore di formato di costante ("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.50000000
"g" Formato breve generale Questo identificatore restituisce informazioni strettamente necessarie. È basato sulle impostazioni cultura e assume il formato [-][d':']h':'mm':'ss[.FFFFFFF].

Altre informazioni: Identificatore di formato breve generale ("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 esteso generale Questo identificatore restituisce sempre giorni e sette cifre frazionarie. È basato sulle impostazioni cultura e assume il formato [-]d':'hh':'mm':'ss.fffffff.

Altre informazioni: Identificatore di formato esteso generale ("G").
New TimeSpan(18, 30, 0) -> 0:18:30:00.0000000 (en-US)

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

Identificatore di formato di costante ("C").

L'identificatore di formato "c" restituisce la rappresentazione di stringa di un valore TimeSpan nel formato seguente:

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

Gli elementi tra parentesi quadre ([e]) sono facoltativi. Il punto (.) e i due punti (:) sono simboli letterali. La tabella seguente descrive gli elementi rimanenti.

Elemento Descrizione
- Un segno negativo facoltativo, che indica un intervallo di tempo negativo.
d Numero di giorni facoltativo, senza zeri iniziali.
hh Numero di ore, nell'intervallo compreso tra "00" e "23".
mm Numero di minuti, nell'intervallo compreso tra "00" e "59".
ss Numero di secondi, nell'intervallo compreso tra "0" e "59".
fffffff La parte frazionaria facoltativa di un secondo. Il valore può variare da "0000001" (un tick oppure un decimilionesimo di secondo) e "9999999" (9.999.999 decimilionesimi di secondo, o un secondo meno di un tick).

A differenza degli identificatori di formato "g" e "G", l'identificatore di formato "c" non è dipendente dalle impostazioni cultura. Produce la rappresentazione di stringa di un TimeSpan valore invariante e comune alle versioni precedenti a .NET Framework 4. "c" è la stringa di formato TimeSpan predefinita; il metodo TimeSpan.ToString() formatta un valore di intervallo di tempo usando la stringa di formato "c".

Nota

TimeSpan supporta anche le stringhe di formato standard "t" e "T", che hanno un comportamento identico alla stringa di formato standard "c".

Nell'esempio seguente viene creata un'istanza di due oggetti TimeSpan, usati per eseguire operazioni aritmetiche e viene visualizzato il risultato. In ogni caso, viene usata la formattazione composita per visualizzare il valore TimeSpan con l'identificatore di 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("{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
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

Identificatore di formato generale ("g")

L'identificatore di formato TimeSpan "g" restituisce la rappresentazione di stringa di un valore TimeSpan in un formato compresso includendo solo gli elementi necessari. e ha il formato seguente:

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

Gli elementi tra parentesi quadre ([e]) sono facoltativi. I due punti (:) sono un simbolo letterale. La tabella seguente descrive gli elementi rimanenti.

Elemento Descrizione
- Un segno negativo facoltativo, che indica un intervallo di tempo negativo.
d Numero di giorni facoltativo, senza zeri iniziali.
h Numero di ore, compreso tra "0" e "23", senza zeri iniziali.
mm Numero di minuti, nell'intervallo compreso tra "00" e "59".
ss Numero di secondi, nell'intervallo compreso tra "00" e "59".
. Il separatore dei secondi frazionari. È equivalente alla proprietà NumberDecimalSeparator della cultura specificata senza gli override dell'utente.
FFFFFFF Frazioni di secondo. Viene visualizzato il minor numero di cifre possibile.

Come l'identificatore di formato "G", l'identificatore di formato "g" viene localizzato. Il separatore delle frazioni di secondo si basa sulla cultura corrente oppure su una proprietà NumberDecimalSeparator della cultura specificata.

Nell'esempio seguente viene creata un'istanza di due oggetti TimeSpan, usati per eseguire operazioni aritmetiche e viene visualizzato il risultato. In ogni caso, viene usata la formattazione composita per visualizzare il valore TimeSpan con l'identificatore di formato "g". Inoltre, formatta il valore TimeSpan usando le convenzioni di formattazione della lingua corrente del sistema (ovvero, in questo caso, Inglese - Stati Uniti o en-US) e il Francese - 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("{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
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

Identificatore di formato esteso generale ("G")

L'identificatore di formato TimeSpan "G" restituisce la rappresentazione di stringa di un valore TimeSpan in un formato esteso che include sempre sia i giorni sia le frazioni di secondo. La stringa risultante dall'identificatore di formato standard "G" ha il seguente formato:

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

Gli elementi tra parentesi quadre ([e]) sono facoltativi. I due punti (:) sono un simbolo letterale. La tabella seguente descrive gli elementi rimanenti.

Elemento Descrizione
- Un segno negativo facoltativo, che indica un intervallo di tempo negativo.
d Il numero di giorni, senza zeri iniziali.
hh Numero di ore, nell'intervallo compreso tra "00" e "23".
mm Numero di minuti, nell'intervallo compreso tra "00" e "59".
ss Numero di secondi, nell'intervallo compreso tra "00" e "59".
. Il separatore dei secondi frazionari. È equivalente alla proprietà NumberDecimalSeparator della cultura specificata senza gli override dell'utente.
fffffff Frazioni di secondo.

Come l'identificatore di formato "G", l'identificatore di formato "g" viene localizzato. Il separatore delle frazioni di secondo si basa sulla cultura corrente oppure su una proprietà NumberDecimalSeparator della cultura specificata.

Nell'esempio seguente viene creata un'istanza di due oggetti TimeSpan, usati per eseguire operazioni aritmetiche e viene visualizzato il risultato. In ogni caso, viene usata la formattazione composita per visualizzare il valore TimeSpan con l'identificatore di formato "G". Inoltre, formatta il valore TimeSpan usando le convenzioni di formattazione della lingua corrente del sistema (ovvero, in questo caso, Inglese - Stati Uniti o en-US) e il Francese - 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("{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
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

Vedi anche