C# 關於使用DateTime進行時間比較的精度問題

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);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章