C#計算兩個時間差的方法代碼分享
一、首先,介紹幾個簡單的概念。如下:
1.DateTime
DateTime值類型代表了一個從公元0001年1月1日0點0分0秒到公元9999年12月31日23點59分59秒之間的具體日期時刻。
因此,你可以用DateTime值類型來描述任何在想象范圍之內的時間。一個DateTime值代表了一個具體的時刻
2.TimeSpan
TimeSpan值包含了許多屬性與方法,用于訪問或處理一個TimeSpan值
下面的列表涵蓋了其中的一部分:
Add:與另一個TimeSpan值相加。
Days:返回用天數(shù)計算的TimeSpan值。
Duration:獲取TimeSpan的絕對值。
Hours:返回用小時計算的TimeSpan值
Milliseconds:返回用毫秒計算的TimeSpan值。
Minutes:返回用分鐘計算的TimeSpan值。
Negate:返回當前實例的相反數(shù)。
Seconds:返回用秒計算的TimeSpan值。
Subtract:從中減去另一個TimeSpan值。
Ticks:返回TimeSpan值的tick數(shù)。
TotalDays:返回TimeSpan值表示的天數(shù)。
TotalHours:返回TimeSpan值表示的小時數(shù)。
TotalMilliseconds:返回TimeSpan值表示的毫秒數(shù)。
TotalMinutes:返回TimeSpan值表示的分鐘數(shù)。
TotalSeconds:返回TimeSpan值表示的秒數(shù)。
二、根據(jù)上面的介紹,進行實例說明。
/// <summary>
/// 計算時間差
/// </summary>
/// <param name="t">時間1</param>
/// <param name="t2">時間2</param>
/// <returns>返回值:時間差(毫秒為單位)</returns>
private long 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);
//是否比現(xiàn)在的時間小,如果小就設置成第二天再啟動,否則當天啟動
if (hours <= 0 && minutes <= 0 && seconds <= 0 && milliseconds <= 0)
hours += 24;
lReturn = hours * 3600 * 1000
+ minutes * 60 * 1000
+ seconds * 1000
+ milliseconds;
}
catch (Exception e) {
throw new Exception(e.Message);
}
return lReturn;
}
三、最后調用此函數(shù)即可。
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);
完成。
相關文章
C# 常用協(xié)議實現(xiàn)模版及FixedSizeReceiveFilter示例(SuperSocket入門)
本文主要介紹了常用協(xié)議實現(xiàn)模版及FixedSizeReceiveFilter示例。具有很好的參考價值,下面跟著小編一起來看下吧2017-01-01
C#遠程發(fā)送和接收數(shù)據(jù)流生成圖片的方法
這篇文章主要介紹了C#遠程發(fā)送和接收數(shù)據(jù)流生成圖片的方法,涉及C#通過數(shù)據(jù)流傳輸圖片的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
C#使用自定義的泛型節(jié)點類實現(xiàn)二叉樹類
這篇文章主要為大家詳細介紹了C#如何使用自定義的泛型節(jié)點類 Node<T>實現(xiàn)二叉樹類BinaryTree<T>及其方法,感興趣的小伙伴可以跟隨小編一起學習一下2024-03-03
C#使用表達式樹(LambdaExpression)動態(tài)更新類的屬性值(示例代碼)
這篇文章主要介紹了C#使用表達式樹(LambdaExpression)動態(tài)更新類的屬性值,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01

