C#中計算兩個時間的差
阿新 • • 發佈:2019-02-04
因為前幾段做專案需要用到計算時間差,今天有時間就整理出來了。希望能對初學者有幫助。(*^__^*) 嘻嘻……
一、首先,介紹幾個簡單的概念。如下:
1.DateTime
DateTime值型別代表了一個從公元0001年1月1日0點0分0秒到公元9999年12月31日23點59分59秒之間的具體日期時刻。
因此,你可以用DateTime值型別來描述任何在想象範圍之內的時間。一個DateTime值代表了一個具體的時刻
2.TimeSpan
TimeSpan值包含了許多屬性與方法,用於訪問或處理一個TimeSpan值
下面的列表涵蓋了其中的一部分:
Add:與另一個TimeSpan值相加。
Days:返回用天數計算的TimeSpan值。
Duration:獲取TimeSpan的絕對值。
Hours:返回用小時計算的TimeSpan值
Milliseconds:返回用毫秒計算的TimeSpan值。
Minutes:返回用分鐘計算的TimeSpan值。
Negate:返回當前例項的相反數。
Seconds:返回用秒計算的TimeSpan值。
Subtract:從中減去另一個TimeSpan值。
Ticks:返回TimeSpan值的tick數。
TotalDays:返回TimeSpan值表示的天數。
TotalHours:返回TimeSpan值表示的小時數。
TotalMilliseconds:返回TimeSpan值表示的毫秒數。
TotalMinutes:返回TimeSpan值表示的分鐘數。
TotalSeconds:返回TimeSpan值表示的秒數。
二、之後,根據上面的介紹,進行例項說明。
///<summary>/// 計算時間差
///</summary>
///<param name="t">時間1</param>
///<param name="t2">時間2</param>
///<returns>返回值:時間差(毫秒為單位)</returns>
privatelong TimeDiff(DateTime t, DateTime t2)
long lReturn =-1;
System.TimeSpan NowValue =new TimeSpan(t.Ticks);
System.TimeSpan TimeValue =new TimeSpan(t2.Ticks);
System.TimeSpan DateDiff = TimeSpan.Zero;
try
{
//計算時間差
//DateDiff = TimeValue.Subtract(NowValue).Duration();
DateDiff = TimeValue.Subtract(NowValue);
int hours = DateDiff.Hours;
int minutes = DateDiff.Minutes;
int seconds = DateDiff.Seconds;
int milliseconds = DateDiff.Milliseconds;
string TimeDiff = hours.ToString() +":"
+ minutes.ToString() +":"
+ seconds.ToString() +"."
+ milliseconds.ToString();
Program.log.WriteLog("時間差:"+TimeDiff, System.DateTime.Now.ToString(), Orid.Log.LogManagerBase.LogMode.logNormal);
//是否比現在的時間小,如果小就設定成第二天再啟動,否則當天啟動
if (hours <=0&& minutes <=0&& seconds <=0&& milliseconds <=0)
hours +=24;
lReturn = hours *3600*1000
+ minutes *60*1000
+ seconds *1000
+ milliseconds;
}
catch (Exception e) {
thrownew Exception(e.Message);
}
return lReturn;
}
三、最後呼叫此函式即可。
long dueTime =this.TimeDiff(System.DateTime.Now, Convert.ToDateTime(config.Pitch));//timer = new System.Threading.Timer(tcb, auto, dueTime, System.Threading.Timeout.Infinite);
timer =new System.Threading.Timer(tcb, auto, dueTime, 24*3600*1000);
以上,完成。。程式碼都很簡單,所以不做具體介紹了。