dateTimePicker1.Value<当运行时的值相同时,dateTimePicker2.Value = true

时间:2015-06-20 01:45:29

标签: c# datetimepicker

我有dateTimePicker1和dateTimePicker2控制Form1上的加载。他们都有相同的日期和时间负载。

        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);
}

语句返回 true 并写入控制台。这不是我所期望的。我希望这会返回假。

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

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

2 个答案:

答案 0 :(得分:0)

不知道你是如何加载这些值的。但是,根据您要查找的精度(例如,小时,分钟或秒),您可以减去这两个值并进行比较。示例:如果您需要精确到几秒钟,那么您可以执行类似下面的操作:

        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);
        }

答案 1 :(得分:0)

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

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

我不确定如何在这里给予赞誉,它属于两个评论者。