1. 程式人生 > >C#常用類 [4] DateTime與TimeSpan

C#常用類 [4] DateTime與TimeSpan

參考或轉載至:MSDNC#中比較常用的DateTime結構的使用方法C#的TimeSpan介紹

1 DateTime 常見用法

1.1DateTime常見屬性

序號 屬性名 解釋
1 Now 獲取一個 DateTime 物件,該物件設定為此計算機上的當前日期和時間,表示為本地時間。
2 Date 獲取此例項的日期部分。
3 Today 獲取當前日期。
4 Day 獲取此例項所表示的日期為該月中的第幾天。
5 DayOfWeek 獲取此例項所表示的日期是星期幾。
6 DayOfYear 獲取此例項所表示的日期是該年中的第幾天。
7 Year 獲取此例項所表示日期的年份部分。
8 Month 獲取此例項所表示日期的月份部分。
9 Hour 獲取此例項所表示日期的小時部分。
10 Minute 獲取此例項所表示日期的分鐘部分。
11 Second 獲取此例項所表示日期的秒部分。
12 Millisecond 獲取此例項所表示日期的毫秒部分。
13 Kind 獲取一個值,該值指示由此例項表示的時間是基於本地時間、協調世界時 (UTC),還是兩者皆否。
14 Ticks 獲取表示此例項的日期和時間的計時週期數。
15 TimeOfDay 獲取此例項的當天的時間。
16 UtcNow 獲取一個 DateTime 物件,該物件設定為此計算機上的當前日期和時間,表示為協調通用時間 (UTC)。

1.2DataTime常見方法

1.2.1 DateTime.Now

   按年、月、日分別統計資料,可使用DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day獲取。同理,當前的時分秒也可以這樣的方式獲取。還可以在當前時間加上一個段時間等操作。

static void Main(string[] args)
{
    //例項化一個DateTime物件
    DateTime newChina = new DateTime(1949, 10, 1, 12, 0, 0);
    Console.WriteLine(newChina);
    //使用DateTime.Now屬性則可獲得當前時間。
    DateTime nowTime = DateTime.Now;
    Console.WriteLine("Time Now is :{0},{1},{2}", nowTime.Year, nowTime.Month, nowTime.Day);
    Console.WriteLine("Time Now2 is :{0},{1},{2},{3}", nowTime.Hour, nowTime.Minute, nowTime.Second,nowTime.Millisecond);
    Console.WriteLine("3 Days after is:{0}", nowTime.AddDays(3));
    Console.ReadLine();
}

結果:
在這裡插入圖片描述

1.2.2 ToString方法

   DateTime的ToString方法有四種過載方式。其中一個過載方式允許傳入String,這就意味著你可以將當前DateTime物件轉換成等效的字串形式。比如我們將當前時間輸出,日期按yyyy-mm-dd格式,時間按hh:mm:ss格式。具體點這裡

static void Main(string[] args)
 {
      Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd"));
      Console.WriteLine(DateTime.Now.ToString("hh:mm:ss"));
 }

在這裡插入圖片描述

2 TimeSpan常見用法

TimeSpan:表示一個時間間隔。

2.1 建構函式

TimeSpan(Int64) 將 TimeSpan結構的新例項初始化為指定的刻度數。
(DateTime.Tick:是計算機的一個計時週期,單位是一百納秒,即一千萬分之一秒)
TimeSpan(Int32, Int32, Int32) 將 TimeSpan結構的新例項初始化為指定的小時數、分鐘數和秒數。
TimeSpan(Int32, Int32, Int32, Int32) 將 TimeSpan結構的新例項初始化為指定的天數、小時數、分鐘數和秒數。
TimeSpan(Int32, Int32, Int32, Int32, Int32) 將新的 TimeSpan結構初始化為指定的天數、小時數、分鐘數、秒數和毫秒數。

static void Main(string[] args)
 {
      TimeSpan ts1 = new TimeSpan(4, 20, 33);  //將時間間隔ts1初始化為4小時20分33秒
      TimeSpan ts2 = new TimeSpan(2, 10, 36, 45);  //將時間間隔ts2初始化為2天10小時36分45秒
      TimeSpan ts3 = new TimeSpan(6, 12, 56, 45, 23);  //將時間間隔ts3初始化為6天12小時56分45秒23毫秒
      Console.WriteLine(ts1);
      Console.WriteLine(ts2);
      Console.WriteLine(ts3);
}

結果為:
在這裡插入圖片描述

2.2 TimeSpan屬性

序號 屬性 解釋
1 Days 直接取出TimeSpan結構所表示的時間間隔的天數部分。
2 Hours 直接取出TimeSpan結構所表示的時間間隔的小時部分。
3 Minutes 直接取出TimeSpan結構所表示的時間間隔的分鐘部分。
4 Seconds 直接取出TimeSpan結構所表示的時間間隔的秒數部分。
5 Milliseconds 直接取出TimeSpan結構所表示的時間間隔的毫秒部分。
6 Ticks 表示多少個一百納秒(計算機的一個計時單位)。
7 TotalDays 將TimeSpan結構所表示的時間間隔換算成等效天數。
8 TotalHours 將TimeSpan結構所表示的時間間隔換算成等效小時數。
9 TotalMinutes 將TimeSpan結構所表示的時間間隔換算成等效分鐘數。
10 TotalSeconds 將TimeSpan結構所表示的時間間隔換算成等效秒數數。

例子:

static void Main(string[] args)
{
      TimeSpan ts4 = new TimeSpan(7, 18, 23, 41, 576);//將時間間隔ts4初始化為7天18小時23分41秒576毫秒(毫秒以千進位制)
      DateTime dt1 = new DateTime(2018, 1, 10, 20, 44, 0);
      DateTime dt2 = DateTime.Now;
      ts4 = dt2 - dt1;  //重新給ts4賦值
      Console.WriteLine("時間間隔為:{0}", ts4);
      Console.WriteLine("時間間隔的天數部分:{0}", ts4.Days);
      Console.WriteLine("時間間隔的小時部分:{0}", ts4.Hours);
      Console.WriteLine("時間間隔的分鐘部分:{0}", ts4.Minutes);
      Console.WriteLine("時間間隔的秒部分:{0}", ts4.Seconds);
      Console.WriteLine("時間間隔的毫秒部分:{0}", ts4.Milliseconds);
      Console.WriteLine("時間間隔的等效刻度數(計時單位:一百納秒):{0}", ts4.Ticks); //輸出多少個一百納秒:30天*24小時*60分*60秒*1000毫秒+03小時*60分*60秒*1000毫秒+09分*60秒*1000毫秒+48秒*1000毫秒+599毫秒=2603388599毫秒,因為刻度是一百納秒(一千萬分之一秒),毫秒為一千分之一秒,所以一毫秒等於1萬乘以一百納秒,所以最後等於2603388599毫秒*10000+5781(個一百納秒)=26033885995781。
      Console.WriteLine("時間間隔的等效天數:{0}", ts4.TotalDays);
      Console.WriteLine("時間間隔的等效小時數:{0}", ts4.TotalHours);
      Console.WriteLine("時間間隔的等效分鐘數:{0}", ts4.TotalMinutes);
      Console.WriteLine("時間間隔的等效秒數:{0}", ts4.TotalSeconds);
      Console.WriteLine("時間間隔的等效毫秒數:{0}", ts4.TotalMilliseconds);
}

在這裡插入圖片描述

3 應用:計算程式執行時間

例子:計算10億次加計算所需要的時間。

static void Main(string[] args)
{
      DateTime t0 = DateTime.Now;
      double num = 1;
      for (int i = 1; i < 1000000000; i++)
      {
          num += i;
       }
       DateTime t1 = DateTime.Now;
	   TimeSpan deltT = t1 - t0;
       Console.WriteLine("總計算時間:" + deltT.TotalMinutes + "s");
       Console.WriteLine("總計算時間:" + deltT.TotalSeconds + "s");
       Console.WriteLine("總計算時間:" + deltT.TotalMilliseconds + "m");
}

結果如下:
在這裡插入圖片描述