标准 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.ParseExact 和 TimeSpan.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:00New TimeSpan(0, 0, 30, 0) -> 00:30:00New 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” | 常规长格式 | 此说明符始终输出天数和 7 个小数位数。 它是文化敏感的,采用 [-]d':'hh':'mm':'ss.fffffff 的形式。详细信息:常规长格式说明符。 |
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 | 秒的可选小数部分。 其值的范围可以是“0000001”(一个滴答,或一个十万分之一秒)到“9999999”(9,999,999,999,100万分之一秒,或一秒少一秒)。 |
与“g”和“G”格式说明符不同,“c”格式说明符不区分区域性。 它生成 TimeSpan 值的字符串表示形式,该值固定且与 .NET Framework 4 之前的版本通用。 “c”是默认 TimeSpan 格式字符串;TimeSpan.ToString() 方法使用“c”格式字符串设置时间间隔值的格式。
注释
TimeSpan 还支持“t”和“T”标准格式字符串,它们的行为与“c”标准格式字符串相同。
以下示例实例化两个 TimeSpan 对象,使用它们执行算术运算并显示结果。 在每种情况下,它都使用复合格式设置通过“c”格式说明符显示 TimeSpan 值。
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]
方括号 ([ 和 ]) 中的元素是可选的。 冒号 (:) 是文本符号。 下表描述了其余元素。
元素 | 说明 |
---|---|
- | 可选的负号,指示负时间间隔。 |
d | 可选天数,不带前导零。 |
h | 小时数,范围为“0”到“23”,无前导零。 |
mm | 分钟数,范围为“00”到“59”。 |
ss | 秒数,范围为“00”到“59”。 |
。 | 小数秒分隔符。 它等效于指定区域性的 NumberDecimalSeparator 属性,而无需用户替代。 |
FFFFFFF | 秒的小数部分。 尽可能少显示数字。 |
与“G”格式说明符一样,“g”格式说明符已本地化。 其小数秒分隔符基于当前区域性或指定区域性的 NumberDecimalSeparator 属性。
以下示例实例化两个 TimeSpan 对象,使用它们执行算术运算并显示结果。 在每种情况下,它都使用复合格式设置通过“g”格式说明符显示 TimeSpan 值。 此外,它还使用当前系统区域性的格式设置约定(在本例中为英语-美国或 en-US)和法语-法国(fr-FR)区域性设置 TimeSpan 值的格式。
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
方括号 ([ 和 ]) 中的元素是可选的。 冒号 (:) 是文本符号。 下表描述了其余元素。
元素 | 说明 |
---|---|
- | 可选的负号,指示负时间间隔。 |
d | 不带前导零的天数。 |
HH | 小时数,范围为“00”到“23”。 |
mm | 分钟数,范围为“00”到“59”。 |
ss | 秒数,范围为“00”到“59”。 |
。 | 小数秒分隔符。 它等效于指定区域性的 NumberDecimalSeparator 属性,而无需用户替代。 |
fffffff | 秒的小数部分。 |
与“G”格式说明符一样,“g”格式说明符已本地化。 其小数秒分隔符基于当前区域性或指定区域性的 NumberDecimalSeparator 属性。
以下示例实例化两个 TimeSpan 对象,使用它们执行算术运算并显示结果。 在每个情况下,它都使用复合格式设置通过“G”格式说明符显示 TimeSpan 值。 此外,它还使用当前系统区域性的格式设置约定(在本例中为英语-美国或 en-US)和法语-法国(fr-FR)区域性设置 TimeSpan 值的格式。
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