C#中計算時間差
阿新 • • 發佈:2018-07-17
小時 tick ise 基本 returns times log title string
問題:
startTime = DateTime.Now;
-----------
slExecutedTime.Text = (DateTime.Now - startTime).ToString();
執行結果:
已執行:00:00:03.1234434(後面會多出很多的小數位)
想要的執行結果:
已執行:00:00:03
解決方案一(推薦):
TimeSpan的相關屬性:
相關屬性和函數 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值表示的秒數。
/// <summary> /// 程序執行時間測試 /// </summary> /// <param name="dateBegin">開始時間</param> /// <param name="dateEnd">結束時間</param> /// <returns>返回(秒)單位,比如: 0.00239秒</returns> public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd) { TimeSpan ts1 = new TimeSpan(dateBegin.Ticks); TimeSpan ts2 = new TimeSpan(dateEnd.Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); //你想轉的格式 return ts3.TotalMilliseconds.ToString(); }
這是最基本的,得到的是毫秒數
如果你是只單純的需要你的那種格式完全可以直接取前10位就行了
- ts3.ToString("g") 0:00:07.171
- ts3.ToString("c") 00:00:07.1710000
- ts3.ToString("G") 0:00:00:07.1710000
有三種格式可以選擇,我建議如果需要其實一種的時候可以使用截取的試比較快捷
比如
ts3.ToString("g").Substring(0,8) 0:00:07.1 ts3.ToString("c").Substring(0,8) 00:00:07 ts3.ToString("G").Substring(0,8) 0:00:00
方案二:較繁瑣
#region 返回時間差 public static string DateDiff(DateTime DateTime1, DateTime DateTime2) { string dateDiff = null; try { TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); TimeSpan ts = ts1.Subtract(ts2).Duration(); string hours = ts.Hours.ToString(), minutes = ts.Minutes.ToString(),seconds = ts.Seconds.ToString(); if(ts.Hours<10) { hours = "0" + ts.Hours.ToString(); } if (ts.Minutes<10) { minutes = "0" + ts.Minutes.ToString(); } if(ts.Seconds<10) { seconds = "0" + ts.Seconds.ToString(); } dateDiff = hours + ":"+ minutes + ":"+ seconds; } catch { } return dateDiff; } #endregion
原創文章,轉載請註明出處:http://www.cnblogs.com/hongfei/archive/2013/03/11/2953366.html
C#中計算時間差