苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5417|回复: 6

[其他] 计算软件的执行时间

[复制链接]
发表于 2013-3-10 17:11:31 | 显示全部楼层 |阅读模式
startTime = DateTime.Now;            
-----------
slExecutedTime.Text = (DateTime.Now - startTime).ToString();
执行结果:
已执行:00:00:03.1234434(后面会多出很多的小数位)
想要的执行结果:
已执行:00:00:03




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-3-10 17:36:27 | 显示全部楼层
试试将DateTime.Now - startTime的结果转换为DateTime类型的,然后用结果进行ToString("HH:mm:ss")
 楼主| 发表于 2013-3-10 18:19:09 | 显示全部楼层
[code=csharp]#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[/code]
发表于 2013-3-10 18:56:52 | 显示全部楼层
TimeSpan这是C#中计算时间差的类,你直接使用+-*/是不可以的
这个类的相关属性如下
  1. 相关属性和函数
  2. Add:与另一个TimeSpan值相加。
  3. Days:返回用天数计算的TimeSpan值。
  4. Duration:获取TimeSpan的绝对值。
  5. Hours:返回用小时计算的TimeSpan值
  6. Milliseconds:返回用毫秒计算的TimeSpan值。
  7. Minutes:返回用分钟计算的TimeSpan值。
  8. Negate:返回当前实例的相反数。
  9. Seconds:返回用秒计算的TimeSpan值。
  10. Subtract:从中减去另一个TimeSpan值。
  11. Ticks:返回TimeSpan值的tick数。
  12. TotalDays:返回TimeSpan值表示的天数。
  13. TotalHours:返回TimeSpan值表示的小时数。
  14. TotalMilliseconds:返回TimeSpan值表示的毫秒数。
  15. TotalMinutes:返回TimeSpan值表示的分钟数。
  16. TotalSeconds:返回TimeSpan值表示的秒数。
复制代码
我提供一个方法
[code=csharp] /// <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();
        }[/code]这是最基本的,得到的是毫秒数
如果你是只单纯的需要你的那种格式完全可以直接取前10位就行了,不需要再像楼上的做运算了。
如果你需要以后通用的话我建议你参考下下面的代码
[code=csharp]ts3.ToString("g")   0:00:07.171
ts3.ToString("c")   00:00:07.1710000
ts3.ToString("G")   0:00:00:07.1710000[/code]
有三种格式可以选择,我建议如果需要其实一种的时候可以使用截取的试比较快捷
比如
[code=csharp]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[/code]

如果解决 你的问题请把分类修改为已解决
发表于 2013-3-11 14:41:28 | 显示全部楼层
站长苏飞 发表于 2013-3-10 18:56
TimeSpan这是C#中计算时间差的类,你直接使用+-*/是不可以的
这个类的相关属性如下我提供一个方法
这是最 ...

DateTime 和 TimeSpan类都对+-*/以及相关组合运算符进行了重载,是可以进行操作的,不过要注意两者的区别~~~
发表于 2013-3-11 14:54:50 | 显示全部楼层
剪刀手 发表于 2013-3-11 14:41
DateTime 和 TimeSpan类都对+-*/以及相关组合运算符进行了重载,是可以进行操作的,不过要注意两者的区别 ...

string ss = (DateTime.Now - DateTime.Now).TotalHours.ToString();
这种写法确实是可以的。
不过差别与含义就不同了。
发表于 2013-3-11 14:59:50 | 显示全部楼层
站长苏飞 发表于 2013-3-11 14:54
string ss = (DateTime.Now - DateTime.Now).TotalHours.ToString();
这种写法确实是可以的。
不过差别 ...

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 04:18

© 2014-2021

快速回复 返回顶部 返回列表