C#中计算时间差中的小数问题解决
C#中计算时间差中的小数问题解决
发布时间:2016-12-28 来源:查字典编辑
摘要:问题:startTime=DateTime.Now;-----------slExecutedTime.Text=(DateTime.Now...

问题:

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#教程学习
热门C#教程学习
编程开发子分类