本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

TimeSpan 结构

 

表示一个时间间隔。

若要浏览此类型的.NET Framework 源代码,请参阅 Reference Source

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct TimeSpan : IComparable, IComparable<TimeSpan>, 
	IEquatable<TimeSpan>, IFormattable

名称说明
System_CAPS_pubmethodTimeSpan(Int32, Int32, Int32)

TimeSpan 结构的新实例初始化为指定的小时数、分钟数和秒数。

System_CAPS_pubmethodTimeSpan(Int32, Int32, Int32, Int32)

TimeSpan 结构的新实例初始化为指定的天数、小时数、分钟数和秒数。

System_CAPS_pubmethodTimeSpan(Int32, Int32, Int32, Int32, Int32)

TimeSpan 结构的新实例初始化为指定的天数、小时数、分钟数、秒数和毫秒数。

System_CAPS_pubmethodTimeSpan(Int64)

TimeSpan 结构的新实例初始化为指定的刻度数。

名称说明
System_CAPS_pubpropertyDays

获取当前 TimeSpan 结构所表示的时间间隔的天数部分。

System_CAPS_pubpropertyHours

获取当前 TimeSpan 结构所表示的时间间隔的小时数部分。

System_CAPS_pubpropertyMilliseconds

获取当前 TimeSpan 结构所表示的时间间隔的毫秒数部分。

System_CAPS_pubpropertyMinutes

获取当前 TimeSpan 结构所表示的时间间隔的分钟数部分。

System_CAPS_pubpropertySeconds

获取当前 TimeSpan 结构所表示的时间间隔的秒数部分。

System_CAPS_pubpropertyTicks

获取表示当前 TimeSpan 结构的值的刻度数。

System_CAPS_pubpropertyTotalDays

获取以整天数和天的小数部分表示的当前 TimeSpan 结构的值。

System_CAPS_pubpropertyTotalHours

获取以整小时数和小时的小数部分表示的当前 TimeSpan 结构的值。

System_CAPS_pubpropertyTotalMilliseconds

获取以整毫秒数和毫秒的小数部分表示的当前 TimeSpan 结构的值。

System_CAPS_pubpropertyTotalMinutes

获取以整分钟数和分钟的小数部分表示的当前 TimeSpan 结构的值。

System_CAPS_pubpropertyTotalSeconds

获取以整秒数和秒的小数部分表示的当前 TimeSpan 结构的值。

名称说明
System_CAPS_pubmethodAdd(TimeSpan)

返回一个新的 TimeSpan 对象,其值为指定的 TimeSpan 对象与此实例的值之和。

System_CAPS_pubmethodSystem_CAPS_staticCompare(TimeSpan, TimeSpan)

比较两个 TimeSpan 值,并返回一个整数,该整数指示第一个值是短于、等于还是长于第二个值。

System_CAPS_pubmethodCompareTo(Object)

将此实例与指定对象进行比较,并返回一个整数,该整数指示此实例是短于、等于还是长于指定对象。

System_CAPS_pubmethodCompareTo(TimeSpan)

将此实例与指定的 TimeSpan 对象进行比较,并返回一个整数,该整数指示此实例是短于、等于还是长于 TimeSpan 对象。

System_CAPS_pubmethodDuration()

返回新的 TimeSpan 对象,其值是当前 TimeSpan 对象的绝对值。

System_CAPS_pubmethodEquals(Object)

返回一个值,该值指示此实例是否等于指定的对象。(覆盖 ValueType.Equals(Object)。)

System_CAPS_pubmethodEquals(TimeSpan)

返回一个值,该值指示此实例是否与指定的 TimeSpan 相等。

System_CAPS_pubmethodSystem_CAPS_staticEquals(TimeSpan, TimeSpan)

返回一个值,该值指示 TimeSpan 的两个指定实例是否相等。

System_CAPS_pubmethodSystem_CAPS_staticFromDays(Double)

返回表示指定天数的 TimeSpan,其中对天数的指定精确到最接近的毫秒。

System_CAPS_pubmethodSystem_CAPS_staticFromHours(Double)

返回表示指定小时数的 TimeSpan,其中对小时数的指定精确到最接近的毫秒。

System_CAPS_pubmethodSystem_CAPS_staticFromMilliseconds(Double)

返回表示指定毫秒数的 TimeSpan

System_CAPS_pubmethodSystem_CAPS_staticFromMinutes(Double)

返回表示指定分钟数的 TimeSpan,其中对分钟数的指定精确到最接近的毫秒。

System_CAPS_pubmethodSystem_CAPS_staticFromSeconds(Double)

返回表示指定秒数的 TimeSpan,其中对秒数的指定精确到最接近的毫秒。

System_CAPS_pubmethodSystem_CAPS_staticFromTicks(Int64)

返回表示指定时间的 TimeSpan,其中对时间的指定以刻度为单位。

System_CAPS_pubmethodGetHashCode()

返回此实例的哈希代码。(覆盖 ValueType.GetHashCode()。)

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_pubmethodNegate()

返回一个新的 TimeSpan 对象,它的值为这个实例的相反值。

System_CAPS_pubmethodSystem_CAPS_staticParse(String)

将时间间隔的字符串表示形式转换为等效的 TimeSpan

System_CAPS_pubmethodSystem_CAPS_staticParse(String, IFormatProvider)

使用指定的区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String, IFormatProvider)

使用指定的格式和区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan 字符串表示形式的格式必须与指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String, IFormatProvider, TimeSpanStyles)

使用指定的格式、区域性特定格式信息和样式,将时间间隔的字符串表示形式转换为其等效的 TimeSpan 字符串表示形式的格式必须与指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String[], IFormatProvider)

使用指定的格式字符串数组和区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan 字符串表示形式的格式必须与一种指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticParseExact(String, String[], IFormatProvider, TimeSpanStyles)

使用指定的格式、区域性特定格式信息和样式,将时间间隔的字符串表示形式转换为其等效的 TimeSpan 字符串表示形式的格式必须与一种指定的格式完全匹配。

System_CAPS_pubmethodSubtract(TimeSpan)

返回一个新的 TimeSpan 对象,其值为指定的 TimeSpan 对象与此实例的值之差。

System_CAPS_pubmethodToString()

将当前 TimeSpan 对象的值转换为其等效的字符串表示形式。(覆盖 ValueType.ToString()。)

System_CAPS_pubmethodToString(String)

使用指定的格式将当前 TimeSpan 对象的值转换为其等效的字符串表示形式。

System_CAPS_pubmethodToString(String, IFormatProvider)

使用指定的格式和区域性特定的格式设置信息,将当前 TimeSpan 对象的值转换为其等效字符串表示形式。

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, IFormatProvider, TimeSpan)

使用指定的区域性特定格式设置信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, TimeSpan)

将时间间隔的字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String, IFormatProvider, TimeSpan)

使用指定的格式和区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。 字符串表示形式的格式必须与指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String, IFormatProvider, TimeSpanStyles, TimeSpan)

使用指定的格式、区域性特定格式信息和样式,将时间间隔的字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。 字符串表示形式的格式必须与指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String[], IFormatProvider, TimeSpan)

使用指定的格式和区域性特定格式信息,将时间间隔的指定字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。 字符串表示形式的格式必须与一种指定的格式完全匹配。

System_CAPS_pubmethodSystem_CAPS_staticTryParseExact(String, String[], IFormatProvider, TimeSpanStyles, TimeSpan)

使用指定的格式、区域性特定格式信息和样式,将时间间隔的指定字符串表示形式转换为其等效的 TimeSpan,并返回一个指示转换是否成功的值。 字符串表示形式的格式必须与一种指定的格式完全匹配。

名称说明
System_CAPS_pubfieldSystem_CAPS_staticMaxValue

表示最大的 TimeSpan 值。 此字段为只读。

System_CAPS_pubfieldSystem_CAPS_staticMinValue

表示最小的 TimeSpan 值。 此字段为只读。

System_CAPS_pubfieldSystem_CAPS_staticTicksPerDay

表示一天中的刻度数。 此字段为常数。

System_CAPS_pubfieldSystem_CAPS_staticTicksPerHour

表示 1 小时的刻度数。 此字段为常数。

System_CAPS_pubfieldSystem_CAPS_staticTicksPerMillisecond

表示 1 毫秒的刻度数。 此字段为常数。

System_CAPS_pubfieldSystem_CAPS_staticTicksPerMinute

表示 1 分钟的刻度数。 此字段为常数。

System_CAPS_pubfieldSystem_CAPS_staticTicksPerSecond

表示 1 秒的刻度数。

System_CAPS_pubfieldSystem_CAPS_staticZero

表示零 TimeSpan 值。 此字段为只读。

名称说明
System_CAPS_puboperatorSystem_CAPS_staticAddition(TimeSpan, TimeSpan)

添加两个指定的 TimeSpan 实例。

System_CAPS_puboperatorSystem_CAPS_staticEquality(TimeSpan, TimeSpan)

指示两个 TimeSpan 实例是否相等。

System_CAPS_puboperatorSystem_CAPS_staticGreaterThan(TimeSpan, TimeSpan)

指示指定的 TimeSpan 是否大于另一个指定的 TimeSpan

System_CAPS_puboperatorSystem_CAPS_staticGreaterThanOrEqual(TimeSpan, TimeSpan)

指示指定的 TimeSpan 是否大于或等于另一个指定的 TimeSpan

System_CAPS_puboperatorSystem_CAPS_staticInequality(TimeSpan, TimeSpan)

指示两个 TimeSpan 实例是否不相等。

System_CAPS_puboperatorSystem_CAPS_staticLessThan(TimeSpan, TimeSpan)

指示指定的 TimeSpan 是否小于另一个指定的 TimeSpan

System_CAPS_puboperatorSystem_CAPS_staticLessThanOrEqual(TimeSpan, TimeSpan)

指示指定的 TimeSpan 是否小于或等于另一个指定的 TimeSpan

System_CAPS_puboperatorSystem_CAPS_staticSubtraction(TimeSpan, TimeSpan)

从另一个指定的 TimeSpan 中减去指定的 TimeSpan

System_CAPS_puboperatorSystem_CAPS_staticUnaryNegation(TimeSpan)

返回一个 TimeSpan,它的值为这个指定实例的相反值。

System_CAPS_puboperatorSystem_CAPS_staticUnaryPlus(TimeSpan)

返回指定的 TimeSpan 的实例。

System_CAPS_note说明

若要查看此类型的.NET Framework 源代码,请参阅 Reference Source 您可以浏览源代码、 下载脱机查看参考资料和调试; 在逐句通过源 (包括修补程序和更新)see instructions.

一个 TimeSpan 对象都表示一个时间间隔 (持续时间的时间或时间),单位为正数或负数数天、 小时、 分钟、 秒和秒的小数。 TimeSpan 结构还可以用于表示一天时间,但仅限时间不与某一特定日期无关。 否则为 DateTimeDateTimeOffset 应改为使用结构。 (有关使用 TimeSpan 结构反映了一天的时间,请参阅 在 DateTime、DateTimeOffset、TimeSpan 和 TimeZoneInfo 之间进行选择。)

System_CAPS_note说明

一个 TimeSpan 值表示时间间隔,并且可以表示为特定数目的天数、 小时、 分钟、 秒和毫秒。 它表示在常规的时间间隔,而无需引用特定的起点或终点,因为它不能表示年和月,这两种都有大量变量的天数。 它不同于 DateTime 值,该值表示的日期和时间而不引用特定时区,或 DateTimeOffset 值,它表示特定时刻的时间。

最大单位时间 TimeSpan 结构使用的度量持续时间是一天。 时间间隔测量以天为单位的一致性,因为各不相同的时间,如月和年,更大的单位的最大天数。

TimeSpan 对象是等于表示的时间间隔的计时周期数。 时钟周期等于 100 纳秒或秒的一千万分之一。TimeSpan 对象的范围可以从 TimeSpan.MinValueTimeSpan.MaxValue

您可以实例化 TimeSpan 在多方面的值︰

  • 通过调用其隐式的默认构造函数。 这将创建一个对象,其值是 TimeSpan.Zero, ,如下面的示例所示。

    TimeSpan interval = new TimeSpan();
    Console.WriteLine(interval.Equals(TimeSpan.Zero));    // Displays "True".
    
  • 通过调用其显式构造函数之一。 下面的示例初始化 TimeSpan 为指定的小时、 分钟和秒数的值。

    TimeSpan interval = new TimeSpan(2, 14, 18);
    Console.WriteLine(interval.ToString());              // Displays "02:14:18".
    
  • 通过调用方法或执行运算,以返回 TimeSpan 值。 例如,您可以实例化 TimeSpan 值,该值表示两个日期和时间值,如以下示例所示之间的间隔。

    DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
    DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
    TimeSpan travelTime = arrival - departure;  
    Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime);      
    // The example displays the following output:
    //       6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00
    

    也可以初始化 TimeSpan 对象传递给这种方式,如以下示例所示的零个时间值。

    using System;
    
    public class Example
    {
       static Random rnd = new Random();
    
       public static void Main()
       {
          TimeSpan timeSpent = TimeSpan.Zero;
    
          timeSpent += GetTimeBeforeLunch();
          timeSpent += GetTimeAfterLunch();
    
          Console.WriteLine("Total time: {0}", timeSpent);
       }
    
       private static TimeSpan GetTimeBeforeLunch()
       {
          return new TimeSpan(rnd.Next(3, 6), 0, 0);
       }
    
       private static TimeSpan GetTimeAfterLunch()
       {
          return new TimeSpan(rnd.Next(3, 6), 0, 0);
       }
    }
    // The example displays output like the following:
    //        Total time: 08:00:00
    

    TimeSpan 算术运算符和方法的返回值 DateTime, ,DateTimeOffset, ,和 TimeSpan 结构。

  • 通过分析的字符串表示形式 TimeSpan 值。 您可以使用 ParseTryParse 方法将包含到的时间间隔的字符串转换 TimeSpan 值。 下面的示例使用 Parse 方法将转换的字符串转换为数组 TimeSpan 值。

    string[] values = { "12", "31.", "5.8:32:16", "12:12:15.95", ".12"};
    foreach (string value in values)
    {
       try {
          TimeSpan ts = TimeSpan.Parse(value);
          Console.WriteLine("'{0}' --> {1}", value, ts);
       }
       catch (FormatException) {
          Console.WriteLine("Unable to parse '{0}'", value);
       }
       catch (OverflowException) {
          Console.WriteLine("'{0}' is outside the range of a TimeSpan.", value);
       }   
    }
    // The example displays the following output:
    //       '12' --> 12.00:00:00
    //       Unable to parse '31.'
    //       '5.8:32:16' --> 5.08:32:16
    //       '12:12:15.95' --> 12:12:15.9500000
    //       Unable to parse '.12'  
    

    此外,可以定义要进行解析并转换到的输入字符串的确切格式 TimeSpan 值通过调用 ParseExactTryParseExact 方法。

可以添加或减少持续时间是通过 AdditionSubtraction 运算符,或通过调用 AddSubtract 方法。 此外可以比较两个持续时间,通过调用 Compare, ,CompareTo, ,和 Equals 方法。 TimeSpan 结构还包含 DurationNegate 方法,将时间间隔转换为正值和负值,

范围 TimeSpan 值是 MinValueMaxValue

一个 TimeSpan 值可以表示为 [-]dhh:mm:ss.ff, ,其中可选负号,指示负时间间隔, d 分量表示天, hh 表示小时采用 24 小时制, mm 为分钟, ss 为秒,和 ff 为秒小数部分的第二个。 它是时间间隔由正数或负数数天而无需一天时间或在多少天与一天时间或仅在一天的时间组成。

开头 .NET Framework 4, 、 TimeSpan 结构支持区分区域性的格式显示各个重载的其 ToString 方法,它将转换 TimeSpan 为其字符串表示形式的值。 默认值 TimeSpan.ToString() 方法通过使用等同于它在早期版本的.NET Framework 的返回值的固定格式返回一个时间间隔。 TimeSpan.ToString(String) 重载允许您指定一个格式字符串,定义的字符串表示形式的时间间隔。 TimeSpan.ToString(String, IFormatProvider) 重载允许您指定格式字符串和区域性,其格式设置约定用于创建的字符串表示形式的时间间隔。 TimeSpan 支持两个标准和自定义格式字符串。 (有关更多信息,请参见标准 TimeSpan 格式字符串自定义的 TimeSpan 格式字符串。) 但是,只有标准格式字符串是区分区域性的。

在某些情况下,代码就成功格式 TimeSpan 中的值以 .NET Framework 3.5 和早期版本中出现故障 .NET Framework 4。 这是最常见的代码调用 < TimeSpan_LegacyFormatMode > 元素 方法来设置格式 TimeSpan 使用格式字符串的值。 下面的示例成功设置 TimeSpan 中的值 .NET Framework 3.5 及更早版本,则会引发异常,但 .NET Framework 4 及更高版本。 请注意,它将尝试格式化 TimeSpan 通过使用不受支持的格式说明符,它将忽略值 .NET Framework 3.5 及更早版本。

TimeSpan interval = new TimeSpan(12, 30, 45);
string output;
try {
   output = String.Format("{0:r}", interval);
}
catch (FormatException) {
   output = "Invalid Format";
}
Console.WriteLine(output);
// Output from .NET Framework 3.5 and earlier versions:
//       12:30:45
// Output from .NET Framework 4:
//       Invalid Format

如果您不能修改代码,则可以还原的旧格式 TimeSpan 中通过以下方式之一的值︰

  • 通过创建配置文件包含 < TimeSpan_LegacyFormatMode > 元素 将该元素设置 enabled 属性设为 true 恢复旧 TimeSpan 格式基于每个应用程序。

  • 通过将"NetFx40_TimeSpanLegacyFormatMode"兼容性设置创建一个应用程序域时,切换。 这将启用旧 TimeSpan 格式基于每个应用程序域。 下面的示例创建的应用程序域中使用旧式 TimeSpan 格式设置。

    using System;
    
    public class Example
    {
       public static void Main()
       {
          AppDomainSetup appSetup = new AppDomainSetup();
          appSetup.SetCompatibilitySwitches( new string[] { "NetFx40_TimeSpanLegacyFormatMode" } );
          AppDomain legacyDomain = AppDomain.CreateDomain("legacyDomain", 
                                                          null, appSetup);
          legacyDomain.ExecuteAssembly("ShowTimeSpan.exe");
       }
    }
    

    当在新的应用程序域中执行下面的代码时,它将恢复到旧 TimeSpan 格式设置行为。

    using System;
    
    public class Example
    {
       public static void Main()
       {
          TimeSpan interval = DateTime.Now - DateTime.Now.Date;
          string msg = String.Format("Elapsed Time Today: {0:d} hours.",
                                     interval);
          Console.WriteLine(msg);
       }
    }
    // The example displays the following output:
    //       Elapsed Time Today: 01:40:52.2524662 hours.
    

下面的示例实例化 TimeSpan 对象,表示两个日期之间的差异。 然后,它显示 TimeSpan 对象的属性。

// Define two dates.
DateTime date1 = new DateTime(2010, 1, 1, 8, 0, 15);
DateTime date2 = new DateTime(2010, 8, 18, 13, 30, 30);
// Calculate the interval between the two dates.
TimeSpan interval = date2 - date1;
Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString());
// Display individual properties of the resulting TimeSpan object.
Console.WriteLine("   {0,-35} {1,20}", "Value of Days Component:", interval.Days);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays);
Console.WriteLine("   {0,-35} {1,20}", "Value of Hours Component:", interval.Hours);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours);
Console.WriteLine("   {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes);
Console.WriteLine("   {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes);
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds);
Console.WriteLine("   {0,-35} {1,20:N0}", "Ticks:", interval.Ticks);
// the example displays the following output:
//       8/18/2010 1:30:30 PM - 1/1/2010 8:00:15 AM = 229.05:30:15
//          Value of Days Component:                             229
//          Total Number of Days:                   229.229340277778
//          Value of Hours Component:                              5
//          Total Number of Hours:                  5501.50416666667
//          Value of Minutes Component:                           30
//          Total Number of Minutes:                       330090.25
//          Value of Seconds Component:                           15
//          Total Number of Seconds:                      19,805,415
//          Value of Milliseconds Component:                       0
//          Total Number of Milliseconds:             19,805,415,000
//          Ticks:                               198,054,150,000,000

通用 Windows 平台
自 8 起可用
.NET Framework
自 1.1 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用

此类型的所有公共静态(Visual Basic 中的 已共享 在 Visual Basic 中)成员都是线程安全的。不保证所有实例成员都是线程安全的。

返回页首
显示: