2015-06-20 70 views
-2

我有dateTimePicker1和dateTimePicker2控件在Form1上加載。他們都有相同的加載日期和時間。dateTimePicker1.Value <dateTimePicker2.Value = true當運行時的值相同時

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

的語句返回,並寫入控制檯不同的值。這不是我所期望的。我希望這會返回false。

如果我將每個控件的值增加1秒,導致它們仍然匹配,則該語句按預期返回false並且沒有任何內容寫入控制檯。

當兩個值相同時,爲什麼小於評估值會在負載情況下返回true?

+2

檢查Value屬性的Ticks和/或Millisecond屬性。我猜測日期時間並不是真的平等。 –

+1

你如何設定日期時間? –

+0

我在考慮與Ticks/Millisecond屬性相同的事情,並且他們並不是真的平等。我做了研究,但我不確定如何使兩個值在加載時相等。 – Dshiz

回答

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

答案是通過設置兩個值彼此相等負載給出。這是因爲控件在不同的時間加載。他們並不是真的平等。

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

我不知道如何在這裏給予信用,它屬於兩個評論者。

相關問題