Welcome

首页 / 软件开发 / .NET编程技术 / .NET Framework 4中的时间间隔格式设置和分析

.NET Framework 4中的时间间隔格式设置和分析2011-08-07 MSDN Ron Petrusha在 Microsoft .NET Framework 4 中,TimeSpan 结构通过增加格式设置和分析支持得到改进,这种支 持可与 DateTime 值的格式设置和分析支持相媲美。在本文中,我将探讨新增的格式设置和分析功能,并 提供 TimeSpan 值使用方面的一些实用提示。

.NET Framework 3.5 及更早版本中的格式设置

在 Microsoft .NET Framework 3.5 及更早版本中,用于时间间隔的唯一格式设置方法是无参数 TimeSpan.ToString 方法。返回字符串的具体格式取决于 TimeSpan 值。其中至少包含 TimeSpan 值的小 时、分钟和秒组成部分。如果是非零值,还包含日组成部分。此外,如果存在小数秒组成部分,则还将包 含计时周期组成部分的所有七位数字。句点(“.”)用作日与小时之间以及秒与小数秒之间的分隔符。

.NET Framework 4 中的扩展格式设置支持

在 .NET Framework 4 中,默认 TimeSpan.ToString 方法的行为没有变化,但现在新增了两个重载。 第一个重载只有一个参数,该参数可以是标准或自定义格式字符串,用于定义结果字符串的格式。第二个 重载有两个参数:一个标准或自定义格式字符串和一个 IFormatProvider 实现,后者表示提供格式设置 信息的区域性。顺便说一下,此方法为 TimeSpan 结构提供了 IFormattable 实现,它使 TimeSpan 值可 用于支持复合格式设置的 String.Format 等方法。

除了包含标准或自定义格式字符串以及提供 IFormattable 实现之外,现在设置了格式的字符串还可 以区分区域性。两个标准格式字符串“g”(一般短格式说明符)和“G”(一般长格式说明符)在结果字 符串中使用当前区域性或特定区域性的格式设置约定。图 1 中的示例格式对此进行了演示,该示例显示 的时间间隔结果字符串使用“G”格式字符串以及 en-US 和 fr-FR 区域性设置了格式。

图 1 使用“G”格式字符串设置格式的时间间隔 (VB)

Visual Basic
Imports System.Globalization

Module Example
Public Sub Main()
Dim interval As New TimeSpan(1, 12, 42, 30, 566)
Dim cultures() As CultureInfo = { New CultureInfo("en-US"),
New CultureInfo("fr-FR") }
For Each culture As CultureInfo In cultures
Console.WriteLine("{0}: {1}", culture, interval.ToString(
"G", culture))
Next
End Sub
End Module

图 1 使用“G”格式字符串设置格式的时间间隔 (C#)

using System;
using System.Globalization;

public class Example
{
public static void Main()
{
TimeSpan interval = new TimeSpan(1, 12, 42, 30, 566);
CultureInfo[] cultures = { new CultureInfo("en-US"),
new CultureInfo(“"fr-FR") };
foreach (CultureInfo culture in cultures)
Console.WriteLine("{0}: {1}", culture, interval.ToString( _
"G", culture));
}
}