2015-09-30 111 views
0

我在我的代碼中遇到了一個問題,在該代碼中,我將今天的日期與數據庫中的日期進行比較,這是我的代碼。這裏label10.Text包含數據庫的日期。基本上我正在提醒應用程序。如果數據庫最新與今天的日期相匹配,那麼它應該發送提醒郵件比較兩個日期時減去日期

DateTime dt = DateTime.Parse(label10.Text); 
long t = dt.ToFileTime(); 
DateTime date1 = DateTime.Today; 
DateTime date2 = new DateTime(t); 
//DateTime date2 = new DateTime(Convert.ToInt64(label10.Text)); 
//DateTime date2 = new DateTime(2015,9,16); 
int result = DateTime.Compare(date1, date2); 
string relationship; 
if (result > 0) 
{ 
    relationship = "is earlier than"; 
    //SendEmail();    
} 
else if (result == 0) 
{ 
    relationship = "is the same time as"; 
    SendEmail(); 
    //MessageBox.Show("is same"); 
} 

else 
{ 
    relationship = "is later than"; 
    SendEmail(); 
    //MessageBox.Show("is later"); 
} 
Console.WriteLine("{0} {1} {2}", date1, relationship, date2); 

現在的問題是,當我運行於date2被裝滿15年9月29日申請,而標籤10只顯示15年9月30日。我不明白爲什麼它正在發生,我也注意到「dt」被30.09.15 12:00:00 AM填滿,其中「date 2」29.09.15 06:30:00 PM,我沒有DB中有其他提醒日期設置爲29.09.15的記錄

+0

來自db的日期是什麼? –

+0

當您在'dt'中已經有了這個值時,'date2'變量的意義是什麼? – DavidG

+0

ToFileTime()做了什麼? –

回答

0

您是否檢查過本地時間與UTC時間之間的時差?數據庫時間可能是UTC時間,而後面的代碼使用本地時間。您可以將所有時間轉換爲本地或通用。

// for converting to local time 
date1.ToLocalTime(); 
// converting to utc time 
date1.ToUniversalTime(); 
0

日期的滴答和文件時間有差異。蜱蟲數從1970年1月1日,從1601年1月1 FILETIME計數您需要更改此設置:

long t = dt.ToFileTime(); 
DateTime date2 = new DateTime(t); 

這樣:

long t = dt.Ticks; 
DateTime date2 = new DateTime(t); 

或者更簡單地說:

DateTime date2 = dt;