C# TimeSpan 計算時間差(時間間隔) - 自由手記

文章推薦指數: 80 %
投票人數:10人

TimeSpan 結構表示一個時間間隔。

命名空間:System 程式集:mscorlib(在mscorlib.dll 中) 說明: 1.DateTime數值型別代表了一個從西元0. 自由手記 跳到主文 記錄區 部落格全站分類:財經政論 相簿 部落格 留言 名片 Jul18Tue201723:18 C#TimeSpan計算時間差(時間間隔) TimeSpan結構表示一個時間間隔。

  命名空間:System程式集:mscorlib(在mscorlib.dll中)   說明:1.DateTime數值型別代表了一個從西元0001年1月1日0點0分0秒到西元9999年12月31日23點59分59秒之間的具體日期時刻。

因此,你可以用DateTime數值型別來描述任何在想像範圍之內的時間。

TimeSpan值包含了許多屬性與方法,用於訪問或處理一個TimeSpan值,   其中的五個重載方法之一的結構TimeSpan(intdays,inthours,intminutes,intseconds)   下面的清單涵蓋了其中的一部分方法及屬性解釋   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值表示的秒數。

  代碼實例   01.TimeSpants=newTimeSpan(12,12,11,12,21); 02.intdays=newTimeSpan(12,12,11,12,21).Days; 03.TimeSpanduration=newTimeSpan(-12,12,11,12,21).Duration();//24小時的反值 04.doubletotalDays=newTimeSpan(12,12,11,12,21).TotalDays; 05.doubletotalHours=newTimeSpan(2,12,11,12,21).TotalHours; 06.inthours=newTimeSpan(12,12,11,12,21).Hours; 07.intminutes=newTimeSpan(12,12,11,12,21).Minutes; 08.TimeSpants2=newTimeSpan(1,3,01,12,21); 09.//TimeSpants2=newTimeSpan(5,3,1,12,21);//thisisalsoright 10.TimeSpants3=newTimeSpan(5,3,01,12,21).Add(ts); 11.TimeSpants4=newTimeSpan(4,3,01,12,21).Subtract(ts); 12.TimeSpants5=newTimeSpan(4,3,01,12,21).Subtract(ts).Duration(); 13.TimeSpanNegate=newTimeSpan(5,3,01,12,21).Negate(); 14.DateTimedtnow=DateTime.Now; 15.Console.WriteLine(ts); 16.Console.WriteLine(days); 17.Console.WriteLine(duration); 18.Console.WriteLine(totalDays); 19.Console.WriteLine(totalHours); 20.Console.WriteLine(hours); 21.Console.WriteLine(minutes); 22.Console.WriteLine(ts2); 23.Console.WriteLine(ts+ts2); 24.Console.WriteLine(ts3); 25.Console.WriteLine("Subtract:"+ts4); 26.Console.WriteLine("Duration:"+ts5); 27.Console.WriteLine(ts-ts2); 28.Console.WriteLine(Negate); 29.DateTimespan=DateTime.Now.Add(ts2); 30.TimeSpanspdate=span-DateTime.Now; 31.longdateTicks=DateTime.Now.Add(ts2).Ticks; 32.Console.WriteLine(span); 33.Console.WriteLine(spdate); 34.Console.WriteLine(dateTicks);   複製代碼   負數   上面是較晚的日期減較早的日期,所以各屬性值為正數,如果是較早的日期減較晚的日期,則屬性值為負數。

  ASP.NET中,兩個時間相減,得到一個TimeSpan實例,TimeSpan有一些屬性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意沒有TotalTicks。

  舉例說明   •時間1是2010-1-28:43:35;   時間2是2010-1-128:43:34。

  用時間2減時間1,得到一個TimeSpan實例。

  那麼時間2比時間1多9天23小時59分59秒。

  那麼,Days就是9,Hours就是23,Minutes就是59,Seconds就是59。

  再來看Ticks,Tick是一個計時週期,表示一百納秒,即一千萬分之一秒,那麼Ticks在這裡表示總共相差多少個時間週期,即:9*24*3600*10000000+23*3600*10000000+59*60*10000000+59*10000000=8639990000000。

3600是一小時的秒數。

  TotalDays就是把Ticks換算成日數,即:8639990000000/(10000000*24*3600)=9.99998842592593。

  TotalHours就是把Ticks換算成小時數,即:8639990000000/(10000000*3600)=239.999722222222。

  TotalMinutes就是把Ticks換算成分鐘數,即:8639990000000/(10000000*60)=14399.9833333333。

  TotalSeconds就是把Ticks換算成秒數,即:8639990000000/(10000000)=863999。

  以下提供一些常用的方法   求離最近發表時間的函數 publicstringDateStringFromNow(DateTimedt) { TimeSpan span=DateTime.Now-dt; if(span.TotalDays>60) { return dt.ToShortDateString(); } elseif(span.TotalDays>30) {   return"1個月前"; } elseif(span.TotalDays>14) { return "2周前"; } elseif(span.TotalDays>7) { return"1周前"; }   elseif(span.TotalDays>1) { returnstring.Format("{0}天前", (int)Math.Floor(span.TotalDays)); } elseif(span.TotalHours>1) { returnstring.Format("{0}小時前",(int)Math.Floor(span.TotalHours)); } elseif(span.TotalMinutes>1) { returnstring.Format("{0}分鐘前",(int)Math.Floor(span.TotalMinutes)); } elseif(span.TotalSeconds>=1) { returnstring.Format("{0}秒前", (int)Math.Floor(span.TotalSeconds)); }   else{ return"1秒前";   } }   C#中使用TimeSpan計算兩個時間的差值   可以反加兩個日期之間任何一個時間單位。

privatestringDateDiff(DateTimeDateTime1,DateTimeDateTime2) {stringdateDiff=null; TimeSpants1=newTimeSpan(DateTime1.Ticks); TimeSpants2=new TimeSpan(DateTime2.Ticks); TimeSpants=ts1.Subtract(ts2).Duration(); dateDiff=ts.Days.ToString()+"天"+ts.Hours.ToString()+"小時"+ts.Minutes.ToString()+"分鐘"+ts.Seconds.ToString()+"秒"; returndateDiff; }   TimeSpants=Date1-Date2;   doubledDays=ts.TotalDays;//帶小數的天數,比如1天12小時結果就是1.5   比如1天12小時結果就是1.5   intnDays=ts.Days;//整數天數,1天12小時或者1天20小時結果都是1   ///

///日期比較 /// ///當前日期 ///輸入日期 ///比較天數 大於天數返回true,小於返回false privateboolCompareDate(stringtoday,stringwriteDate,intn) { DateTimeToday=Convert.ToDateTime(today); DateTimeWriteDate=Convert.ToDateTime(writeDate); WriteDate=WriteDate.AddDays(n); if(Today>=WriteDate) returnfalse; else returntrue; }   在定義Date資料類型時候,必須注意下面三點:   1.Date數值必須以數位記號"#"括起來。

  2.Date數值中的日期資料可有可無,如果有必須符合格式"m/d/yyyy"。

  3.Date數值中的時間資料可有可無,如果有必須和日期資料通過空格分開,並且時分秒之間以":"分開。

  一.DateTime和TimeSpan的關係和區別:   DateTime和TimeSpan是VisualBasic.Net中用以處理時間日期類型資料的二個主要的結構,這二者的區別在於,DatTime表示一個固定的時間,而TimeSpan表示的是一個時間間隔,即一段時間。

在下面介紹的程式示例中,TimeSpan就用以目前時間和給定時間之差。

  二.DateTime和TimeSpan中的常用成員及其說明:   DateTime結構和TimeSpan結構提供了豐富的方法和屬性,   屬性說明 Date獲取此實例的日期部分。

Day獲取此實例所表示的日期為該月中的第幾天。

DayOfWeek獲取此實例所表示的日期是星期幾。

DayOfYear獲取此實例所表示的日期是該年中的第幾天。

Hour獲取此實例所表示日期的小時部分。

Millisecond獲取此實例所表示日期的毫秒部分。

Minute獲取此實例所表示日期的分鐘部分。

Month獲取此實例所表示日期的月份部分。

Now創建一個DateTime實例,它是此電腦上的當前本地日期和時間。

Second獲取此實例所表示日期的秒部分。

TimeOfDay獲取此實例的當天的時間。

Today獲取當前日期。

Year獲取此實例所表示日期的年份部分。

  Add將指定的TimeSpan的值加到此實例的值上。

AddDays將指定的天數加到此實例的值上。

AddHours將指定的小時數加到此實例的值上。

AddMilliseconds將指定的毫秒數加到此實例的值上。

AddMinutes將指定的分鐘數加到此實例的值上。

AddMonths將指定的月份數加到此實例的值上。

AddSeconds將指定的秒數加到此實例的值上。

AddYears將指定的年份數加到此實例的值上。

DaysInMonth返回指定年份中指定月份的天數。

IsLeapYear返回指定的年份是否為閏年的指示。

Parse將日期和時間的指定字串表示轉換成其等效的DateTime實例。

Subtract從此實例中減去指定的時間或持續時間。

ToLongDateString將此實例的值轉換為其等效的長日期字串表示形式。

ToLongTimeString將此實例的值轉換為其等效的長時間字串表示形式。

ToShortTimeString將此實例的值轉換為其等效的短時間字串表示形式。

ToShortDateString將此實例的值轉換為其等效的短日期字串表示形式。

全站熱搜 創作者介紹 戮克 自由手記 戮克發表在痞客邦留言(0)人氣() E-mail轉寄 全站分類:數位生活上一篇:Android檢測App的記憶體佔用和洩漏 下一篇:Informix的多重駐留 歷史上的今天 2017:詐騙手法 2017:民進黨譴責國會暴力 2017:Informix的多重駐留 2017:Android檢測App的記憶體佔用和洩漏 2017:5.4用神經網絡做欺詐檢測 2017:咱們身邊們的箱民實在很憨呆 2017:[Android]耳機插入檢測 2017:AndroidAPI教程:人臉檢測 2017:js實現密碼強度檢測 2017:在android中实现shake的动作检测 2017:進行MySQL資料庫表的故障檢測 2017:測試oracle壓力 2017:使用TestNG進行多線程壓力測試 2017:Android資料傳遞相關內容概述 2017:android裡使用Bundle傳遞參數 2017:訊號傳遞 2017:ASP.NETMVC4新特性之腳本壓縮和合併 2017:蔡女皇何時要幫台灣拚經濟? 2017:奉蔡女皇令.對假新聞要闢謠!! 2017:看清楚喔!!..就是民進黨在阻礙台灣進步!! 2017:#政黨協商和王柯密室喬不同藍委林為洲講不會再跟民進黨密室協商綠委李俊俋講本來就沒有但關說柯才批黃國昌密室協商好手更曾中斷協商和廖國棟喬!!民進黨李俊俋"你瞎聾"了嗎?農舍蘇當選院長喊終結國會黑箱.是假的嗎?關說柯爆黃國昌是密室協商高手.是假的嗎?關說柯中斷協商改和廖國棟先喬.是假的嗎?+++民進黨李俊俋"你瞎聾"了嗎?>>>農舍蘇喊終結國會黑箱.關關說柯爆黃國昌是密室協商高手.關說柯中斷政黨協商改和廖國棟先喬.你都不知道嗎?我知道你要講什?..就是政黨協商都是公開的對吧?政黨協商和王柯 2017:自來膠凝劑加過量水公司:賠償基隆每戶1公噸用水 2017:perl庫:Net:FTP 2017:PerlFTP自動上傳檔的腳本以及設定檔 2017:Mysql自動定時備份及上傳到FTP 2017:[Perl]NEW::FTP的使用 2017:[JAVA]ftp上傳下載 2017:[Python]ftp伺服器下載檔案 2017:公聽會還沒談完怎麼先估價了? 2017:java操作FTP伺服器檔案系統代碼 2017:[C#]FTP下載、上載和刪除檔案 2017:開啟IIS裡的FTP主動模式(PASV模式) 2017:讓我們看看年改會今天還有什麼瞎話要說。

2017:IIS之FTP伺服器的設置 2017:【姍姍來遲的重測荒謬的紙上談兵】 2017:100侖目(也就是1,000毫西弗)以下的輻射不會對人體產生直接的影響 2017:〈美國環保人士希冀韓國保留核電〉 2016:長春集團總裁林書鴻:非核過渡期先重啟核四因應 2016:被收押禁見的愛國人士應該承認教唆犯罪的是林全並提告申請國賠‬!! 2016:別只想改革別人.正名運動從上而下做起!! 2016:‪#‎威京集團沈慶京願設籍太平島率捐2千萬當建設基金就是學日本沖之鳥屎一樣一堆日議員設籍‬!! 2016:黃國昌政治獻金3298萬洪慈庸林昶佐呂孫綾柯建銘卻都透支是作假帳圖利自己人嗎‬? 2016:大選前企業選邊站小英收的捐款比朱立倫多400倍‬!! 2016:三立海派插旗綠中常委綠委雙重標準的講不違黨政軍退出媒體‬!!! 2016:民進黨早是個獨裁專制的一人政黨了.卻還在假民主的詐騙台灣人!! 2016:唉呀!這一定是假的!我眼睛業障重啊! 2016:民進黨全代會有提到太平島的事情嗎?事情越來越清楚,民進黨應該是準備賣掉太平島了,大家等著看吧! 2016:沒下限的高雄市政府#3 2016:國昌的性命是鑲金又包銀 2016:李奧納多•達文西曾說過:「理論脫離實踐是最大的不幸!」 2016:【無法忘記的718-張藥房強拆三周年,大溝頂拆除最後一天】 2016:從小住在陽明山豪宅的屏東女兒會挺你們?她早就把你們賣了! 2015:台灣已經是網路上的綠衛兵在搞文革了,媒體也跟著網路走。

有沒有可能懸崖勒馬?就看大家的智慧了! 2015:台獨是年輕世代的天然成分 2015:綠營執政縣市,大多數財政情況都不理想, 2015:柯P動刀打房!將推5萬戶出租公宅僅市價7折 ▲top 留言列表 發表留言 站方公告 [公告]2022年度農曆春節期間服務公告[公告]MIB廣告分潤計劃、PIXwallet錢包帳戶條款異動通知[公告]2021年度農曆春節期間服務公告 活動快報 打造健康生活 幫助維持消化道機能,促進新陳代謝、幫助維持消化道... 看更多活動好康 我的好友 熱門文章 最新文章 動態訂閱 文章精選 文章精選 所有文章列表 文章搜尋 新聞交換(RSS) 誰來我家 POWEREDBY (登入) RSS訂閱 參觀人氣 本日人氣: 累積人氣: 最新留言 我的連結 網路流行用語薑餅屋先生鳴黎的筆記http://www.unood.me/我的Coding之路資訊理想化的延伸良葛格學習筆記小黑人的Android教室短網址產生器 月曆 « 三月2022 » 日 一 二 三 四 五 六     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31     我去誰家 QRCode 本部落格的文章和圖片大多來自網路,如有侵權請告知,以便刪除 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗



請為這篇文章評分?