我有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?
答案 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;
}
我不确定如何在这里给予赞誉,它属于两个评论者。