C#常用類 [4] DateTime與TimeSpan
阿新 • • 發佈:2019-01-11
參考或轉載至:MSDN、C#中比較常用的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");
}
結果如下: