1. 程式人生 > >TimeSpan時間間隔

TimeSpan時間間隔

一個TimeSpan物件都表示一個時間間隔 (持續時間的時間或時間),
單位為正數或負數的天數、 小時、 分鐘、 秒和小數部分的第二個數字。
TimeSpan結構還可以用於表示一天時間,但僅,如果與某一特定日期無關的時間。
否則為DateTime或DateTimeOffset應改為使用結構。


 TimeSpan建構函式
1.TimeSpan(Int64): 將TimeSpan結構的新例項初始化為指定的刻度數。
2.TimeSpan(Int32, Int32, Int32): 將TimeSpan結構的新例項初始化為指定的小時數、分鐘數和秒數。
3.TimeSpan(Int32, Int32, Int32, Int32): 將TimeSpan結構的新例項初始化為指定的天數、小時數、分鐘數和秒數。
4.TimeSpan(Int32, Int32, Int32, Int32, Int32): 將TimeSpan結構的新例項初始化為指定的天數、小時數、分鐘數、秒數和毫秒數。

1.TimeSpan(Int64),public TimeSpan (long ticks);
將TimeSpan 結構的新例項初始化為指定的刻度數
ticks 100 毫微秒為單位表示的時間段。

TimeSpan inverval2 = new TimeSpan(20);
Console.WriteLine(inverval2.ToString());//00:00:00.0000020

 2.TimeSpan(Int32, Int32, Int32),public TimeSpan (int hours, int minutes, int seconds);
將TimeSpan 結構的新例項初始化為指定的小時數、分鐘數和秒數。

TimeSpan inverval3 = new TimeSpan(15, 45, 30);
Console.WriteLine(inverval3.ToString());//15:45:30

3.TimeSpan(Int32, Int32, Int32, Int32),public TimeSpan(int days, int hours, int minutes, int seconds);

將TimeSpan 結構的新例項初始化為指定的天數、小時數、分鐘數和秒數。

TimeSpan inverval4_1 = new TimeSpan(10, 20, 30, 40
); TimeSpan inverval4_2 = new TimeSpan(-10, 20, 30, 40); TimeSpan inverval4_3 = new TimeSpan(-10, -20, -30, -40); TimeSpan inverval4_4 = new TimeSpan(0, 49, 30, 40); Console.WriteLine("{0,-35}{1,20}", "new TimeSpan(10, 20, 30, 40)", inverval4_1.ToString()); Console.WriteLine("{0,-35}{1,20}", "new TimeSpan(-10, 20, 30, 40)", inverval4_2.ToString()); Console.WriteLine("{0,-35}{1,20}", "new TimeSpan(-10, -20, -30, -40)", inverval4_3.ToString()); Console.WriteLine("{0,-35}{1,20}", "new TimeSpan(0, 49, 30, 40)", inverval4_4.ToString()); new TimeSpan(10, 20, 30, 40) //10.20:30:40 new TimeSpan(-10, 20, 30, 40) //-9.03:29:20 new TimeSpan(-10, -20, -30, -40) //-10.20:30:40 new TimeSpan(0, 49, 30, 40) //2.01:30:40
View Code

 4.TimeSpan(Int32, Int32, Int32, Int32, Int32),public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds);

將TimeSpan 結構的新例項初始化為指定的天數、小時數、分鐘數和秒數。

TimeSpan inverval5 = new TimeSpan(10, 20, 30, 40,20);
Console.WriteLine("{0,-35}{1,20}", "new TimeSpan(10, 20, 30, 40,20)", inverval5.ToString());
new TimeSpan(10, 20, 30, 40,20) //10.20:30:40.0200000

TimeSpan 欄位
 Maximum:表示最大的TimeSpan值,此欄位為只讀,此欄位的值等效於Int64.MaxValue計時週期數。
                   此值的字串表示形式是正 10675199.02:48:05.4775807 或略微超過 10675199 天。
 Maximum:表示最小的TimeSpan值,此欄位為只讀,此欄位的值等效於Int64.MinValue計時週期數。
      此值的字串表示形式是負 10675199.02:48:05.4775808 或負略微超過 10675199 天。
 Zero:表示零TimeSpan值,此欄位為只讀
    因為的值Zero欄位是TimeSpan物件,表示零個時間值,將其與其他進行比較TimeSpan物件以確定
      是否後者表示正的非零或負時間間隔。 此外可以使用此欄位來初始化TimeSpan為零個時間值的物件。
 TicksPerDay:表示一天中的刻度數。 此欄位為常數。此常量的值是 864 億個;也就是說,864,000,000,000。
 TicksPerHour:表示 1 小時的刻度數。 此欄位為常數。此常量的值是 36 億個;也就是說,36,000,000,000。
 icksPerMinute:表示 1 分鐘的刻度數。 此欄位為常數。此常量的值為 600 萬;也就是說,600000000。
 TicksPerSecond:表示 1 秒的刻度數。此常量的值為 1000 萬;也就是說,10,000,000。
 TicksPerMinute:表示 1 分鐘的刻度數。 此欄位為常數。此常量的值為 600 萬;也就是說,600000000。
 TicksPerMillisecond:表示 1 毫秒的刻度數。 此欄位為常數。此常量的值是 1 萬。它是 10,000。

            const string numberFmt = "{0,-22}{1,18:N0}";
            const string timeFmt = "{0,-22}{1,26}";

            Console.WriteLine("This example of the fields of the TimeSpan class" + "\ngenerates the following output.\n");
            Console.WriteLine(numberFmt, "Field", "Value");
            Console.WriteLine(numberFmt, "-----", "-----");

            // Display the maximum, minimum, and zero TimeSpan values.
            Console.WriteLine(timeFmt, "Maximum TimeSpan", Align(TimeSpan.MaxValue));
            Console.WriteLine(timeFmt, "Minimum TimeSpan", Align(TimeSpan.MinValue));
            Console.WriteLine(timeFmt, "Zero TimeSpan", Align(TimeSpan.Zero));
            Console.WriteLine();

            // Display the ticks-per-time-unit fields.
            Console.WriteLine(numberFmt, "Ticks per day", TimeSpan.TicksPerDay);
            Console.WriteLine(numberFmt, "Ticks per hour", TimeSpan.TicksPerHour);
            Console.WriteLine(numberFmt, "Ticks per minute", TimeSpan.TicksPerMinute);
            Console.WriteLine(numberFmt, "Ticks per second", TimeSpan.TicksPerSecond);
            Console.WriteLine(numberFmt, "Ticks per millisecond", TimeSpan.TicksPerMillisecond);        


        /// <summary>
        ///對齊方法
        /// </summary>
        /// <param name="interval"></param>
        /// <returns></returns>
        static string Align(TimeSpan interval)
        {
            string intervalStr = interval.ToString();
            int pointIndex = intervalStr.IndexOf(':');

            pointIndex = intervalStr.IndexOf('.', pointIndex);
            if (pointIndex < 0) intervalStr += "        ";
            return intervalStr;
        }    

未完待續。。。。