标准 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.ParseExact 和 TimeSpan.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
返回表首