标准 TimeSpan 格式字符串

标准 TimeSpan 格式字符串使用单个格式说明符来定义通过格式设置操作生成的 TimeSpan 值的文本表示形式。 任何包含一个以上字符(包括空白)的格式字符串都被解释为自定义的 TimeSpan 格式字符串。 有关更多信息,请参见自定义的 TimeSpan 格式字符串

TimeSpan 值的字符串表示形式通过调用 TimeSpan.ToString 方法的重载以及使用支持复合格式设置(如 String.Format)的方法而生成。 有关更多信息,请参见格式化类型复合格式。 下面的示例演示标准格式字符串在分析操作中的用法。

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

TimeSpan.ParseExactTimeSpan.TryParseExact 方法还可以使用标准 TimeSpan 格式字符串来定义分析操作所需的输入字符串格式。 (分析操作会将值的字符串表示形式转换为该值。)下面的示例演示标准格式字符串在分析操作中的用法。

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

下表列出了标准时间间隔格式说明符。

格式说明符

名称

说明

示例

“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 格式。

更多信息:常规长(“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]

方括号([ 和 ])中的元素是可选的。 句点 (.) 和冒号 (:) 是文本符号。 下表描述了剩余元素。

元素

说明

-

可选负号,指示负时间间隔。

d

可选天数,不带前导零。

hh

小时数,范围从“00”到“23”。

mm

分钟数,范围从“00”到“59”。

ss

秒数,范围从“0”到“59”。

fffffff

可选毫秒数,范围从“0010000”到“9990000”。

与“g”和“G”格式说明符不同,“c”格式说明符不区分区域性。 它生成 TimeSpan 值的字符串表示形式,此表示形式是不变的且对 .NET Framework 4 版之前的所有 .NET Framework 版本都是通用的。“ c”是默认的 TimeSpan 格式字符串;通过使用“c”格式字符串,TimeSpan.ToString() 方法可设置时间间隔值的格式。

注意注意

TimeSpan 还支持“t”和“T”标准格式字符串,这两个格式字符串与“c” 标准格式字符串在行为上是相同的。

下面的示例实例化两个 TimeSpan 对象,使用它们可执行算术运算并显示结果。 在任何一种情况下,它通过使用“c”格式说明符来使用复合格式显示 TimeSpan 值。

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

返回表首

常规短(“g”)格式说明符

“g”TimeSpan 格式说明符通过只包含所必需的元素以精简格式返回 TimeSpan 值的字符串表示形式。 它具有以下形式:

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

方括号([ 和 ])中的元素是可选的。 冒号 (:) 是文本符号。 下表描述了剩余元素。

元素

说明

-

可选负号,指示负时间间隔。

d

可选天数,不带前导零。

h

小时数,范围从“0”到“23”,不带前导零。

mm

分钟数,范围从“00”到“59”。

ss

秒数,范围从“00”到“59”。

.

秒的小数部分的分隔符。 它等效于指定区域性的 NumberDecimalSeparator 属性(未经用户重写)。

FFFFFFF

秒的小数部分。 显示尽可能少的数字。

与“G”格式说明符一样,对“g”格式说明符进行本地化。 其秒的小数部分的分隔符基于当前区域性或指定区域性的 NumberDecimalSeparator 属性。

下面的示例实例化两个 TimeSpan 对象,使用它们可执行算术运算并显示结果。 在任何一种情况下,它通过使用“g”格式说明符来使用复合格式显示 TimeSpan 值。 此外,它通过使用当前系统区域性(在本示例中为英语 - 美国或 en-US)和法语 - 法国 (fr-FR) 区域性的格式设置约定来设置 TimeSpan 值的格式。

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

返回表首

常规长(“G”)格式说明符

“G”TimeSpan 格式说明符以长格式(始终包含天和秒的小数部分)返回 TimeSpan 值的字符串表示形式。 由“G”标准格式说明符生成的字符串具有以下形式:

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

方括号([ 和 ])中的元素是可选的。 冒号 (:) 是文本符号。 下表描述了剩余元素。

元素

说明

-

可选负号,指示负时间间隔。

d

天数,不带前导零。

hh

小时数,范围从“00”到“23”。

mm

分钟数,范围从“00”到“59”。

ss

秒数,范围从“00”到“59”。

.

秒的小数部分的分隔符。 它等效于指定区域性的 NumberDecimalSeparator 属性(未经用户重写)。

fffffff

秒的小数部分。

与“G”格式说明符一样,对“g”格式说明符进行本地化。 其秒的小数部分的分隔符基于当前区域性或指定区域性的 NumberDecimalSeparator 属性。

下面的示例实例化两个 TimeSpan 对象,使用它们可执行算术运算并显示结果。 在任何一种情况下,它通过使用“G”格式说明符来使用复合格式显示 TimeSpan 值。 此外,它通过使用当前系统区域性(在本示例中为英语 - 美国或 en-US)和法语 - 法国 (fr-FR) 区域性的格式设置约定来设置 TimeSpan 值的格式。

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

返回表首

请参见

概念

格式化类型

其他资源

自定义的 TimeSpan 格式字符串

分析字符串