一聚教程网:一个值得你收藏的教程网站

热门教程

asp.net中C#中计算时间差代码

时间:2022-06-25 08:21:06 编辑:袖梨 来源:一聚教程网

我用的最简单的办法是

 代码如下 复制代码

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

 代码如下 复制代码
///
        /// 程序执行时间测试
        ///

        /// 开始时间
        /// 结束时间
        /// 返回(秒)单位,比如: 0.00239秒
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.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秒前";
}
}

热门栏目