共用方式為


標準 TimeSpan 格式字串

標準 TimeSpan 格式字串會使用單一格式規範來定義格式化作業所產生的 TimeSpan 值的文字表示。 包含多個字元的任何格式字串,包括空格符,會解譯為自定義 TimeSpan 格式字串。 如需詳細資訊,請參閱 自訂 TimeSpan 格式字串

TimeSpan 值的字串表示是由呼叫 TimeSpan.ToString 方法的多載,以及支援複合格式的方法所產生,例如 String.Format。 如需詳細資訊,請參閱 格式化類型複合格式。 下列範例說明在格式化作業中使用標準格式字串。

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

標準 TimeSpan 格式字串也會由 TimeSpan.ParseExactTimeSpan.TryParseExact 方法來定義剖析作業所需的輸入字串格式。 (剖析會將值的字串表示轉換為該值。下列範例說明在剖析作業中使用標準格式字串。

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

下表列出標準時間間隔格式規範。

格式規範 名稱 說明 範例
“c” 常數 (不變) 格式 此規範不區分文化特性。 格式為 [-][d'.']hh':'mm':'ss['.'fffffff]

(“t” 和 “T” 格式字串會產生相同的結果。

詳細資訊:常數 (“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" 一般簡短格式 此規範只會輸出所需的專案。 它是區分文化特性,並以 [-][d':']h':'mm':'ss[.FFFFFFF]的形式。

詳細資訊:一般簡短 (“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" 一般長格式 此規範一律會輸出天和七個小數字數。 它是區分文化特性,並以 [-]d':'hh':'mm':'ss.fffffff的形式。

詳細資訊:一般 Long (“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)

常數 (“c”) 格式規範

“c” 格式規範會以下列格式傳回 TimeSpan 值的字串表示:

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

方括弧 ([ 和 ]) 中的元素是選擇性的。 句號 (.) 和冒號 (:) 是常值符號。 下表描述其餘元素。

元素 說明
- 選擇性負號,表示負時間間隔。
選擇性天數,不含前置零。
HH 小時數,範圍從 “00” 到 “23”。
mm 分鐘數,範圍從 “00” 到 “59”。
ss 秒數,範圍從 “0” 到 “59”。
fffffff 秒的選擇性小數部分。 其值的範圍可以從“0000001”(一個刻度或一個十萬秒)到“9999999”(9,999,999,999萬分之一秒,或一秒少一秒的刻度)。

不同於 「g」 和 「G」 格式規範,「c」 格式規範不區分文化特性。 它會產生 TimeSpan 值的字串表示,該值不因變異,而且與 .NET Framework 4 之前的版本通用。 “c” 是預設 TimeSpan 格式字串;TimeSpan.ToString() 方法會使用 「c」 格式字串來格式化時間間隔值。

備註

TimeSpan 也支援 「t」 和 「T」 標準格式字串,其行為與 「c」 標準格式字串相同。

下列範例會具現化兩個 TimeSpan 物件、使用這些對象來執行算術運算,並顯示結果。 在每個案例中,它都會使用複合格式來顯示 TimeSpan 值,方法是使用 「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

一般簡短 (“g”) 格式規範

“g” TimeSpan 格式規範只會包含必要的元素,以精簡形式傳回 TimeSpan 值的字串表示。 格式如下:

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

方括弧 ([ 和 ]) 中的元素是選擇性的。 冒號 (:) 是常值符號。 下表描述其餘元素。

元素 說明
- 選擇性負號,表示負時間間隔。
選擇性天數,不含前置零。
小時 小時數,範圍從 “0” 到 “23”,沒有前置零。
mm 分鐘數,範圍從 “00” 到 “59”。
ss 秒數,範圍從 “00” 到 “59”。
小數秒分隔符。 它相當於指定的文化特性的 NumberDecimalSeparator 屬性,而不需覆寫使用者。
FFFFFFF 小數秒。 儘可能顯示最少的數位。

如同 “G” 格式規範,“g” 格式規範會當地語系化。 其小數秒分隔符是以目前文化特性或指定文化特性的 NumberDecimalSeparator 屬性為基礎。

下列範例會具現化兩個 TimeSpan 物件、使用這些對象來執行算術運算,並顯示結果。 在每個案例中,它都會使用複合格式來顯示 TimeSpan 值,方法是使用 「g」 格式規範。 此外,它會使用目前系統文化特性的格式慣例來格式化 TimeSpan 值(在此案例中為英文-美國或 en-US),以及法文-法國(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

一般 Long (“G”) 格式規範

“G” TimeSpan 格式規範會以長格式傳回 TimeSpan 值的字串表示,且一律包含天和小數秒。 來自「G」 標準格式規範的字串具有下列格式:

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

方括弧 ([ 和 ]) 中的元素是選擇性的。 冒號 (:) 是常值符號。 下表描述其餘元素。

元素 說明
- 選擇性負號,表示負時間間隔。
天數,沒有前置零。
HH 小時數,範圍從 “00” 到 “23”。
mm 分鐘數,範圍從 “00” 到 “59”。
ss 秒數,範圍從 “00” 到 “59”。
小數秒分隔符。 它相當於指定的文化特性的 NumberDecimalSeparator 屬性,而不需覆寫使用者。
fffffff 小數秒。

如同 “G” 格式規範,“g” 格式規範會當地語系化。 其小數秒分隔符是以目前文化特性或指定文化特性的 NumberDecimalSeparator 屬性為基礎。

下列範例會具現化兩個 TimeSpan 物件、使用這些對象來執行算術運算,並顯示結果。 在每個案例中,它都會使用複合格式來顯示 TimeSpan 值,方法是使用 「G」 格式規範。 此外,它會使用目前系統文化特性的格式慣例來格式化 TimeSpan 值(在此案例中為英文-美國或 en-US),以及法文-法國(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

另請參閱