C# dateTimePicker1.值<;dateTimePicker2.Value=运行时值相同时为true

C# dateTimePicker1.值<;dateTimePicker2.Value=运行时值相同时为true,c#,datetimepicker,C#,Datetimepicker,我在Form1上加载了dateTimePicker1和dateTimePicker2控件。它们都有相同的装载日期和时间 dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "yyyy-MM-dd hh:mm:ss"; dateTimePicker2.Format = DateTimePickerFormat.Custom;

我在Form1上加载了dateTimePicker1和dateTimePicker2控件。它们都有相同的装载日期和时间

        dateTimePicker1.Format = DateTimePickerFormat.Custom;
        dateTimePicker1.CustomFormat = "yyyy-MM-dd hh:mm:ss";
        dateTimePicker2.Format = DateTimePickerFormat.Custom;
        dateTimePicker2.CustomFormat = "yyyy-MM-dd hh:mm:ss" 
当我使用

if (dateTimePicker1.Value < dateTimePicker2.Value) {
    Console.WriteLine(dateTimePicker1.Value + " is earlier than " + dateTimePicker2.Value);
}
if(dateTimePicker1.Value
语句返回true并写入控制台。这不是我所期望的。我希望这会返回false

如果我将每个控件的值增加1秒,使它们仍然匹配,则语句将按预期返回false,并且不会向控制台写入任何内容


当两个值相同时,为什么小于计算值在加载时返回true?

不知道如何加载值。但是,根据您所寻求的精度(例如,小时、分钟或秒),您可以减去这两个值并进行比较。示例:如果需要以秒为单位的精度,则可以执行以下类似操作:

        dateTimePicker1.Value = DateTime.Now;
        dateTimePicker2.Value = DateTime.Now.AddMilliseconds(999);
        var timeSpan1 = dateTimePicker1.Value - dateTimePicker2.Value;
        if (Math.Abs(timeSpan1.TotalSeconds) > 1) {
            MessageBox.Show(dateTimePicker1.Value + " is not same as " + dateTimePicker2.Value);
        } else {
            MessageBox.Show(dateTimePicker1.Value + " is same as " + dateTimePicker2.Value);
        }

通过将两个值设置为负载时彼此相等即可给出答案。这是因为控件在不同的时间加载。他们实际上并不平等

    private void Form1_Load(object sender, EventArgs e)
    {
        dateTimePicker2.Value = dateTimePicker1.Value;
    }

我不知道如何在这里给予赞扬,它属于两个评论者。

检查滴答声和/或Value属性的毫秒属性。我猜日期时间不是真的相等。如何设置日期时间?我对滴答数/毫秒属性也有同样的想法,它们不是真的相等。。我对此进行了研究,但我不确定如何在加载时使这两个值相等。请尝试设置datetimepicker1,然后将其分配给datetimepicker2
datetimepicker2=datetimepicker1
。我有时也会忘记一些简单的事情。发生了:)