我用的最简单的办法是
代码如下 复制代码 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(); //你想转的格式 return ts3.TotalMilliseconds.ToString();}
这是最基本的,得到的是毫秒数
如果你是只单纯的需要你的那种格式完全可以直接取前10位就行了
代码如下 复制代码 1.ts3.ToString("g") 0:00:07.1712.ts3.ToString("c") 00:00:07.17100003.ts3.ToString("G") 0:00:00:07.1710000
有三种格式可以选择,我建议如果需要其实一种的时候可以使用截取的试比较快捷比如
代码如下 复制代码 ts3.ToString("g").Substring(0,8) 0:00:07.1ts3.ToString("c").Substring(0,8) 00:00:07ts3.ToString("G").Substring(0,8) 0:00:00
--------------------------------------------------------------------------------
C#中使用TimeSpan计算两个时间(www.111cn.net)的差值
代码如下 复制代码 可以反加两个日期之间任何一个时间单位。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秒前"; } } from:http://www.111cn.net/net/160/45591.htm
新闻热点
疑难解答