Standardowe ciągi formatujące TimeSpan

Ciąg formatu standardowego TimeSpan używa specyfikatora pojedynczego formatu, aby zdefiniować reprezentację tekstową TimeSpan wartości, która wynika z operacji formatowania. Dowolny ciąg formatu zawierający więcej niż jeden znak, w tym biały znak, jest interpretowany jako ciąg formatu niestandardowego TimeSpan . Aby uzyskać więcej informacji, zobacz Niestandardowe ciągi formatu TimeSpan.

Reprezentacje ciągów TimeSpan wartości są generowane przez wywołania przeciążeń TimeSpan.ToString metody, a także przez metody, które obsługują formatowanie złożone, takie jak String.Format. Aby uzyskać więcej informacji, zobacz Formatowanie typów i formatowanie złożone. Poniższy przykład ilustruje użycie standardowych ciągów formatu w operacjach formatowania.

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

Ciągi formatu standardowego TimeSpan są również używane przez TimeSpan.ParseExact metody i TimeSpan.TryParseExact do definiowania wymaganego formatu ciągów wejściowych dla operacji analizowania. (Analizowanie konwertuje reprezentację ciągu wartości na wartość). Poniższy przykład ilustruje użycie standardowych ciągów formatu w operacjach analizowania.

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

W poniższej tabeli wymieniono specyfikatory formatu interwału czasu standardowego.

Specyfikator formatu Nazwa/nazwisko opis Przykłady
"c" Format stałej (niezmienny) Ten specyfikator nie jest uwzględniany w kulturze. Przyjmuje postać [-][d'.']hh':'mm':'ss['.'fffffff].

(Ciągi formatu "t" i "T" generują te same wyniki).

Więcej informacji: Specyfikator formatu stałej ("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” Ogólny format krótki Ten specyfikator generuje tylko to, co jest potrzebne. Jest ona wrażliwa na kulturę i przyjmuje formę [-][d':']h':'mm':'ss[.FFFFFFF].

Więcej informacji: Ogólny specyfikator formatu short ("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” Ogólny format długi Ten specyfikator zawsze zwraca dni i siedem cyfr ułamkowych. Jest ona wrażliwa na kulturę i przyjmuje formę [-]d':'hh':'mm':'ss.fffffff.

Więcej informacji: Ogólny specyfikator formatu long ("G").
New TimeSpan(18, 30, 0) -> 0:18:30:00.0000000 (en-US)

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

Specyfikator formatu stałej ("c")

Specyfikator formatu "c" zwraca reprezentację TimeSpan ciągu wartości w następującym formularzu:

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

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. Kropka (.) i dwukropek (:) są symbolami literału. W poniższej tabeli opisano pozostałe elementy.

Element opis
- Opcjonalny znak ujemny, który wskazuje ujemny interwał czasu.
d Opcjonalna liczba dni bez zer wiodących.
hh Liczba godzin, która waha się od "00" do "23".
mm Liczba minut, która waha się od "00" do "59".
ss Liczba sekund, która waha się od "0" do "59".
Fffffff Opcjonalna część ułamkowa sekundy. Jego wartość może wahać się od "0000001" (jeden znacznik lub dziesiąty milion sekundy) do "9999999" (999 999 999 999 dziesiątych części sekundy, lub jeden drugi mniej jeden znacznik).

W przeciwieństwie do specyfikatorów formatu "g" i "G", specyfikator formatu "c" nie jest uwzględniany w kulturze. Tworzy on reprezentację TimeSpan ciągu wartości, która jest niezmienna i jest wspólna dla wersji wcześniejszych niż .NET Framework 4. "c" jest domyślnym TimeSpan ciągiem formatu; TimeSpan.ToString() metoda formatuje wartość interwału czasu przy użyciu ciągu formatu "c".

Uwaga

TimeSpan Obsługuje również standardowe ciągi formatu "t" i "T", które są identyczne w zachowaniu ze standardowym ciągiem formatu "c".

Poniższy przykład tworzy wystąpienie dwóch TimeSpan obiektów, używa ich do wykonywania operacji arytmetycznych i wyświetla wynik. W każdym przypadku używa formatowania złożonego do wyświetlania TimeSpan wartości przy użyciu specyfikatora formatu "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

Ogólny specyfikator formatu krótkiego ("g")

Specyfikator formatu "g" TimeSpan zwraca reprezentację TimeSpan ciągu wartości w formie kompaktowej, uwzględniając tylko niezbędne elementy. Ma on następującą formę:

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

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. Dwukropek (:) jest symbolem literału. W poniższej tabeli opisano pozostałe elementy.

Element opis
- Opcjonalny znak ujemny, który wskazuje ujemny interwał czasu.
d Opcjonalna liczba dni bez zer wiodących.
h Liczba godzin, która waha się od "0" do "23", bez zer wiodących.
mm Liczba minut, która waha się od "00" do "59".
ss Liczba sekund, która waha się od "00" do "59".
. Separator sekund ułamkowych. Jest to odpowiednik właściwości określonej kultury NumberDecimalSeparator bez przesłonięć użytkownika.
FFFFFFF Ułamkowe sekundy. Wyświetlana jest jak najmniejsza liczba cyfr.

Podobnie jak specyfikator formatu "G", specyfikator formatu "g" jest zlokalizowany. Separator sekund ułamkowych jest oparty na bieżącej kulturze lub właściwości określonej kultury NumberDecimalSeparator .

Poniższy przykład tworzy wystąpienie dwóch TimeSpan obiektów, używa ich do wykonywania operacji arytmetycznych i wyświetla wynik. W każdym przypadku używa formatowania złożonego do wyświetlania TimeSpan wartości przy użyciu specyfikatora formatu "g". Ponadto formatuje TimeSpan wartość przy użyciu konwencji formatowania bieżącej kultury systemowej (która w tym przypadku jest angielska - Stany Zjednoczone lub en-US) i francuska - Francja (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

Specyfikator formatu ogólnego długiego ("G")

Specyfikator formatu "G" TimeSpan zwraca reprezentację TimeSpan ciągu wartości w długiej postaci, która zawsze zawiera zarówno dni, jak i sekundy ułamkowe. Ciąg, który wynika ze specyfikatora formatu standardowego "G", ma następującą postać:

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

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. Dwukropek (:) jest symbolem literału. W poniższej tabeli opisano pozostałe elementy.

Element opis
- Opcjonalny znak ujemny, który wskazuje ujemny interwał czasu.
d Liczba dni bez zer wiodących.
hh Liczba godzin, która waha się od "00" do "23".
mm Liczba minut, która waha się od "00" do "59".
ss Liczba sekund, która waha się od "00" do "59".
. Separator sekund ułamkowych. Jest to odpowiednik właściwości określonej kultury NumberDecimalSeparator bez przesłonięć użytkownika.
Fffffff Ułamkowe sekundy.

Podobnie jak specyfikator formatu "G", specyfikator formatu "g" jest zlokalizowany. Separator sekund ułamkowych jest oparty na bieżącej kulturze lub właściwości określonej kultury NumberDecimalSeparator .

Poniższy przykład tworzy wystąpienie dwóch TimeSpan obiektów, używa ich do wykonywania operacji arytmetycznych i wyświetla wynik. W każdym przypadku używa formatowania złożonego do wyświetlania TimeSpan wartości przy użyciu specyfikatora formatu "G". Ponadto formatuje TimeSpan wartość przy użyciu konwencji formatowania bieżącej kultury systemowej (która w tym przypadku jest angielska - Stany Zjednoczone lub en-US) i francuska - Francja (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

Zobacz też