c# 计算程序运行时间 TIME

第一种方法利用System.DateTime.Now:


static void SubTest()
{
  DateTime beforDT = System.DateTime.Now;
 
  //耗时巨大的代码
 
  DateTime afterDT = System.DateTime.Now;
    string totaltime = afterDT.Subtract(beforDT).TotalSeconds.ToString("F3",             
CultureInfo.InvariantCulture);
 
MessageBox.Show("共"+ totaltime + "秒!");





    double ts = afterDT.Subtract(beforDT).TotalMilliseconds;
  Console.WriteLine("DateTime总共花费{ts}ms");
}


第二种用Stopwatch类(System.Diagnostics):


static void SubTest()
{
  Stopwatch sw = new Stopwatch();
  sw.Start();
 
  //耗时巨大的代码
 
  sw.Stop();
  TimeSpan ts2 = sw.Elapsed;
  Console.WriteLine("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds);
}
  Timing tt = new Timing();
  tt.Write();
  // 模拟耗时操作
  tt.Stop();
  Thread.Sleep(300); // 1.5秒
  tt.Write();
 //xxx
  tt.Reset();
  tt.Write();
 using System.Diagnostics;
namespace TT1
{
    public class Timing
    {
        private Stopwatch _stopwatch; // 更符合C#命名规范的变量名

        // 构造函数:初始化并启动秒表
        public Timing()
        {
            _stopwatch = Stopwatch.StartNew(); // 直接使用StartNew()简化初始化
        }

        // 无参写入方法:输出默认提示和当前时间(秒)
        public void Write()
        {
            Z.WriteMessage($"\n>>> 计时开始,当前时间: {GetFormattedSeconds()}");
            _stopwatch.Start(); // 写入时重置计时(原逻辑可能隐含"开始计时"的意图)
        }

        // 带参写入方法:输出自定义提示和当前时间(秒)
        public void Write(string message)
        {
            Z.WriteMessage($"\n{message} >>> 计时开始,当前时间: {GetFormattedSeconds()}");
            _stopwatch.Start(); // 写入时重置计时
        }

        // 秒(保留1位小数)
        public double Seconds => _stopwatch?.Elapsed.TotalSeconds ?? 0;

        // 格式化的秒字符串(如 "12.3秒")
        public string FormattedSeconds => $"{Seconds:F1}秒";

        // 停止计时
        public void Stop()
        {
            _stopwatch?.Stop();
        }
        // 关键新增:继续计时(从上次暂停的时间点继续累计)
        public void Start()
        {
            if (!_stopwatch.IsRunning) // 避免重复启动
                _stopwatch.Start();
        }
        // 关键新增:重置时间为0(保持当前运行状态)
        public void Reset()
        {
            bool wasRunning = _stopwatch.IsRunning; // 记录当前是否在运行
            _stopwatch.Reset();                     // 重置累计时间为0
            if (wasRunning) _stopwatch.Start();     // 若之前在运行,重置后继续计时
        }
        // 辅助方法:获取格式化的秒数(处理null情况)
        private string GetFormattedSeconds()
        {
            return _stopwatch is null ? "0.0秒" : $"{_stopwatch.Elapsed.TotalSeconds:F1}秒";
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值