C#使用TimeSpan時(shí)間計(jì)算的簡(jiǎn)單實(shí)現(xiàn)
本文告訴大家簡(jiǎn)單的方法進(jìn)行時(shí)間計(jì)算。
實(shí)際上使用 TimeSpan 可以做到讓代碼比較好懂,而代碼很簡(jiǎn)單。
例如我使用下面的代碼表示 5 秒
const int needCount = 5 * 1000;
因?yàn)楹竺媸褂玫氖茄舆t,延遲的代碼很簡(jiǎn)單
Task.Delay(needCount)
這時(shí)傳入的是一個(gè)毫秒,但是很多小伙伴問(wèn),為什么是 5*1000 表示 5秒,他不知道我使用的是毫秒。
所以建議使用 TimeSpan 來(lái)寫(xiě)時(shí)間,下面的需求是在判斷在開(kāi)機(jī) 20 秒內(nèi)的延遲,如果在開(kāi)機(jī) 20 秒內(nèi)啟動(dòng)應(yīng)用,那么就需要延遲時(shí)間
var needTime = TimeSpan.FromSeconds(20); //開(kāi)機(jī)20秒左右 USB 已經(jīng)加載完成
計(jì)算時(shí)間的減法或加法可以使用重載+和-,請(qǐng)看下面代碼,就是把兩個(gè) TimeSpan 相減,返回的值也是一個(gè) TimeSpan ,下面的代碼是編譯不通過(guò)的。
var chikesereHearpawwirboo = needTime - maxDelay; Console.WriteLine(chikesereHearpawwirboo);
如果需要從毫秒轉(zhuǎn) TimeSpan ,請(qǐng)看下面代碼
// 毫秒轉(zhuǎn) TimeSpan var milliseconds = 5 * 1000; var time = TimeSpan.FromMilliseconds(milliseconds); // TimeSpan 轉(zhuǎn) 毫秒 milliseconds =(int) time.TotalMilliseconds;
因?yàn)閺拿朕D(zhuǎn)毫秒的值是 double 需要進(jìn)行轉(zhuǎn)換,如果使用 int 轉(zhuǎn)換有時(shí)會(huì)越界,建議使用下面代碼
// 毫秒轉(zhuǎn) TimeSpan long milliseconds = 5 * 1000; var time = TimeSpan.FromMilliseconds(milliseconds); // TimeSpan 轉(zhuǎn) 毫秒 milliseconds = (long) Math.Ceiling(time.TotalMilliseconds);
這個(gè)計(jì)算適合在有天數(shù)和小時(shí)等的計(jì)算,如計(jì)算 1天 減去 3h10m 有多少毫秒,如果不使用 TimeSpan 自己重寫(xiě),還是需要寫(xiě)很多代碼
var time = TimeSpan.FromDays(1); var cut = new TimeSpan(0, 3, 10, 0); var milliseconds = (long)(time - cut).TotalMilliseconds;
嘗試不使用 TimeSpan 想想需要怎么寫(xiě)
C#使用timespan和timer完成一個(gè)簡(jiǎn)單的倒計(jì)時(shí)器
首先利用timespan數(shù)據(jù)類型這樣構(gòu)造:
TimeSpan ts = new TimeSpan(0, 45, 0);
這樣就聲明了一個(gè)長(zhǎng)度為45分鐘的時(shí)間段,其中構(gòu)造函數(shù)參數(shù)的含義:
TimeSpan(hour,minute,second);
然后拖進(jìn)去一個(gè)timer,叫timer1
timer1.Interval=1000;
設(shè)置一秒一個(gè)周期
在timer的tick事件里面這樣寫(xiě):
private void timer1_Tick(object sender, EventArgs e) { String str = ts.Hours.ToString() + ":" + ts.Minutes.ToString() + ":" + ts.Seconds.ToString(); label17.Text = str;//label17用來(lái)顯示剩余的時(shí)間 ts = ts.Subtract(new TimeSpan(0, 0, 1));//每隔一秒減去一秒 if (ts.TotalSeconds < 0.0)//當(dāng)?shù)褂?jì)時(shí)完畢 { timer1.Enabled = false; MessageBox.Show("考試時(shí)間到,系統(tǒng)將強(qiáng)行交卷");//提示時(shí)間到,下面可以加你想要的操作 } }
一個(gè)簡(jiǎn)單的倒計(jì)時(shí)器就這樣完成了,嘿嘿,不看不知道,一看很簡(jiǎn)單呀
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
C#編程中使用ref和out關(guān)鍵字來(lái)傳遞數(shù)組對(duì)象的用法
這篇文章主要介紹了C#編程中使用ref和out關(guān)鍵字來(lái)傳遞數(shù)組對(duì)象的用法,在C#中數(shù)組也是對(duì)象可以被傳遞,需要的朋友可以參考下2016-01-01C#刪除只讀文件或文件夾(解決File.Delete無(wú)法刪除文件)
這篇文章主要介紹了C#刪除只讀文件或文件夾(解決File.Delete無(wú)法刪除文件),需要的朋友可以參考下2015-09-09使用C#實(shí)現(xiàn)在word中插入頁(yè)眉頁(yè)腳的方法
這篇文章主要介紹了使用C#實(shí)現(xiàn)在word中插入頁(yè)眉頁(yè)腳的方法,是操作Word的常見(jiàn)方法,有一定的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下2014-08-08利用C#/VB.NET實(shí)現(xiàn)PPT轉(zhuǎn)換為HTML
利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強(qiáng)。但難免在某些情況下我們會(huì)需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對(duì)大家有所幫助2023-05-05C# 通過(guò)同步和異步實(shí)現(xiàn)優(yōu)化做早餐的時(shí)間
本文以一個(gè)簡(jiǎn)單的小例子—如何做一頓早餐及如何優(yōu)化做早餐的時(shí)間來(lái)讓大家具體了解一下同步和異步方法的區(qū)別,需要的朋友可以參考一下2021-12-12