C#計(jì)算兩個(gè)時(shí)間差的方法代碼分享
一、首先,介紹幾個(gè)簡(jiǎn)單的概念。如下:
1.DateTime
DateTime值類型代表了一個(gè)從公元0001年1月1日0點(diǎn)0分0秒到公元9999年12月31日23點(diǎn)59分59秒之間的具體日期時(shí)刻。
因此,你可以用DateTime值類型來(lái)描述任何在想象范圍之內(nèi)的時(shí)間。一個(gè)DateTime值代表了一個(gè)具體的時(shí)刻
2.TimeSpan
TimeSpan值包含了許多屬性與方法,用于訪問(wèn)或處理一個(gè)TimeSpan值
下面的列表涵蓋了其中的一部分:
Add:與另一個(gè)TimeSpan值相加。
Days:返回用天數(shù)計(jì)算的TimeSpan值。
Duration:獲取TimeSpan的絕對(duì)值。
Hours:返回用小時(shí)計(jì)算的TimeSpan值
Milliseconds:返回用毫秒計(jì)算的TimeSpan值。
Minutes:返回用分鐘計(jì)算的TimeSpan值。
Negate:返回當(dāng)前實(shí)例的相反數(shù)。
Seconds:返回用秒計(jì)算的TimeSpan值。
Subtract:從中減去另一個(gè)TimeSpan值。
Ticks:返回TimeSpan值的tick數(shù)。
TotalDays:返回TimeSpan值表示的天數(shù)。
TotalHours:返回TimeSpan值表示的小時(shí)數(shù)。
TotalMilliseconds:返回TimeSpan值表示的毫秒數(shù)。
TotalMinutes:返回TimeSpan值表示的分鐘數(shù)。
TotalSeconds:返回TimeSpan值表示的秒數(shù)。
二、根據(jù)上面的介紹,進(jìn)行實(shí)例說(shuō)明。
/// <summary>
/// 計(jì)算時(shí)間差
/// </summary>
/// <param name="t">時(shí)間1</param>
/// <param name="t2">時(shí)間2</param>
/// <returns>返回值:時(shí)間差(毫秒為單位)</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
{
//計(jì)算時(shí)間差
//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("時(shí)間差:"+TimeDiff, System.DateTime.Now.ToString(), Orid.Log.LogManagerBase.LogMode.logNormal);
//是否比現(xiàn)在的時(shí)間小,如果小就設(shè)置成第二天再啟動(dòng),否則當(dāng)天啟動(dòng)
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;
}
三、最后調(diào)用此函數(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);
完成。
相關(guān)文章
Unity3D實(shí)現(xiàn)虛擬按鈕控制人物移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)虛擬按鈕控制人物移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C#結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)驗(yàn)證識(shí)別ID卡內(nèi)容的方法
這篇文章主要介紹了C#結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)驗(yàn)證識(shí)別ID卡內(nèi)容的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-07-07C#實(shí)現(xiàn)從windows剪貼板獲取內(nèi)容的方法
這篇文章主要介紹了C#實(shí)現(xiàn)從windows剪貼板獲取內(nèi)容的方法,涉及C#操作剪貼板的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05C# 動(dòng)態(tài)輸出Dos命令執(zhí)行結(jié)果的實(shí)例(附源碼)
這篇文章主要介紹了C# 動(dòng)態(tài)輸出Dos命令執(zhí)行結(jié)果的實(shí)例,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07C#發(fā)送Get、Post請(qǐng)求(帶參數(shù))
本文主要介紹了C#發(fā)送Get、Post請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09C#正則表達(dá)式分解和轉(zhuǎn)換IP地址實(shí)例(C#正則表達(dá)式大全 c#正則表達(dá)式語(yǔ)法)
這是我發(fā)了不少時(shí)間整理的C#的正則表達(dá)式,新手朋友注意一定要手冊(cè)一下哦,這樣可以節(jié)省很多寫代碼的時(shí)間。下面進(jìn)行了簡(jiǎn)單總結(jié)2013-12-12C#自定義導(dǎo)出數(shù)據(jù)到Excel的類實(shí)例
這篇文章主要介紹了C#自定義導(dǎo)出數(shù)據(jù)到Excel的類,實(shí)例分析了C#操作Excel的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03