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)寫時(shí)間,下面的需求是在判斷在開機(jī) 20 秒內(nèi)的延遲,如果在開機(jī) 20 秒內(nèi)啟動(dòng)應(yīng)用,那么就需要延遲時(shí)間
var needTime = TimeSpan.FromSeconds(20); //開機(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 自己重寫,還是需要寫很多代碼
var time = TimeSpan.FromDays(1); var cut = new TimeSpan(0, 3, 10, 0); var milliseconds = (long)(time - cut).TotalMilliseconds;
嘗試不使用 TimeSpan 想想需要怎么寫
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事件里面這樣寫:
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ì)我們的支持。
上一篇:C#讀寫共享文件夾的方法
欄 目:C#教程
下一篇:C#中實(shí)現(xiàn)插入、刪除Excel分頁(yè)符的方法
本文標(biāo)題:C#使用TimeSpan時(shí)間計(jì)算的簡(jiǎn)單實(shí)現(xiàn)
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5176.html
您可能感興趣的文章
- 01-10Extjs4如何處理后臺(tái)json數(shù)據(jù)中日期和時(shí)間
- 01-10C#使用Dispose模式實(shí)現(xiàn)手動(dòng)對(duì)資源的釋放
- 01-10C#3.0使用EventLog類寫Windows事件日志的方法
- 01-10WinForm實(shí)現(xiàn)程序一段時(shí)間不運(yùn)行自動(dòng)關(guān)閉的方法
- 01-10C#使用windows服務(wù)開啟應(yīng)用程序的方法
- 01-10c# ArrayList的使用方法小總結(jié)
- 01-10C#使用ADO.Net部件來(lái)訪問(wèn)Access數(shù)據(jù)庫(kù)的方法
- 01-10C#使用Mutex簡(jiǎn)單實(shí)現(xiàn)程序單實(shí)例運(yùn)行的方法
- 01-10C#計(jì)算程序執(zhí)行過(guò)程花費(fèi)時(shí)間的方法
- 01-10時(shí)間戳與時(shí)間相互轉(zhuǎn)換(php .net精確到毫秒)


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改