C# 关于使用DateTime进行时间比较的精度问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jinhangdev/article/details/79152598

C# 关于使用DateTime进行时间比较的精度问题

从今天起,博主打算开始写一些博客,记录一下在开发过程中遇到的问题并存档,后面还会跟上补充之前在开发过程中遇到过的诸多问题的解决方案

问题描述

在写一个定时程序时发现将设定的时间和当前时间进行比较时出错,经查阅文档发现DateTime对象的精度精确到毫秒,但是我的程序设定时间的级别在秒(即用一个Timer每秒检查一次时间是否到,由于Timer的间隔设定过短会影响程序性能,且精度在低于1000毫秒非常差),因此一些提供的诸如CompareTo()Equals()再或者直接用==来比较的方法都会因为毫秒精度上比较失效。

解决方法

使用DateTime对象的ToString()方法,将要比较的两个DateTime对象双方格式化成同样形式的字符串,再进行字符串比较。代码如下:

private void tmrCurTime_Tick(object sender, EventArgs e)
{
    DateTime dt = DateTime.Now;
    tsslCurTime.Text = $"当前时间:{dt}";
    if (IsInSetDown)
    {
        if (dt.ToString("yyyy-MM-dd HH:mm:ss") == dtpDownTime.Value.ToString("yyyy-MM-dd HH:mm:ss"))
        {
            MessageBox.Show("时间到", "时间到", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/jinhangdev/article/details/79152598