我用的最簡單的辦法是
代碼如下 |
複製代碼 |
DateTime dtone = Convert.ToDateTime("2007-1-1 05:32:22"); DateTime dtwo = Convert.ToDateTime("2007-1-1 04:20:15"); TimeSpan span = dtone.Subtract(dtwo); Response.Write(span.Days + "天" + span.Hours + "小時" + span.Minutes + "分鐘" + span.Seconds+"秒"); |
上面是給定兩個時間,計算時間差,輸出類似於“相差10天5小時10分28秒”的格式了,但是如果我想算出兩個頁面執行時差呢。
執行個體1
代碼如下 |
複製代碼 |
/// <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(); //你想轉的格式 returnts3.TotalMilliseconds.ToString(); } |
這是最基本的,得到的是毫秒數
如果你是只單純的需要你的那種格式完全可以直接取前10位就行了
代碼如下 |
複製代碼 |
1.ts3.ToString("g") 0:00:07.171 2.ts3.ToString("c") 00:00:07.1710000 3.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 |
--------------------------------------------------------------------------------
C#中使用TimeSpan計算兩個時間的差值
代碼如下 |
複製代碼 |
可以反加兩個日期之間任何一個時間單位。 private string DateDiff(DateTime DateTime1, DateTime DateTime2) {string dateDiff = null; TimeSpan ts1 = new TimeSpan(DateTime1.Ticks); TimeSpan ts2 = new TimeSpan(DateTime2.Ticks); TimeSpan ts = ts1.Subtract(ts2).Duration(); dateDiff = ts.Days.ToString()+"天"+ ts.Hours.ToString()+"小時"+ ts.Minutes.ToString()+"分鐘"+ ts.Seconds.ToString()+"秒"; return dateDiff; } TimeSpan ts = Date1 - Date2; double dDays = ts.TotalDays;//帶小數的天數,比如1天12小時結果就是1.5 int nDays = ts.Days;//整數天數,1天12小時或者1天20小時結果都是1
|
最近發表時間的函數
代碼如下 |
複製代碼 |
public string DateStringFromNow(DateTime dt) { TimeSpan span = DateTime.Now - dt; if (span.TotalDays > 60) { return dt.ToShortDateString(); } else if ( span.TotalDays > 30 ) { return "1個月前"; } else if (span.TotalDays > 14) { return "2周前"; } else if (span.TotalDays > 7) { return "1周前"; } else if (span.TotalDays > 1) { return string.Format("{0}天前", (int)Math.Floor(span.TotalDays)); } else if (span.TotalHours > 1) { return string.Format("{0}小時前", (int)Math.Floor(span.TotalHours)); } else if (span.TotalMinutes > 1) { return string.Format("{0}分鐘前", (int)Math.Floor(span.TotalMinutes)); } else if (span.TotalSeconds >= 1) { return string.Format("{0}秒前", (int)Math.Floor(span.TotalSeconds)); } else { return "1秒前"; } }
|