2015-06-03 118 views
-1

長大,我在C#下面的代碼:怎麼看,如果另一個日期比今天的日期

DateTime dt = Convert.ToDateTime(strDueDate); //strDueDate = '03-25-2015' 
string strToday = DateTime.Now.ToString("mm-dd-yyyy"); 
DateTime dt1 = Convert.ToDateTime(strToday); // this is displaying 9/3/2015 12:00:00 AM 
if (dt < dt1) 
{ 
    dvShowReopen.Visible = false; 
} 

我所希望做的是採取strDueDate和比較反對的今天。如果比今天少,則將可見性設置爲假。

我該如何實現它。

+1

'DateTime.Now.ToString( 「MM-DD-YYYY」);'給你分鐘而不是幾個月。 –

+3

'dt

+0

爲什麼不只是'if(dt.Date

回答

2

此代碼無效嗎?

DateTime dt = new DateTime(2015, 3, 25); 
DateTime dt1 = DateTime.Now; 

if (dt < dt1) 
{ 
    dvShowReopen.Visible = false; 
} 
+0

您正在使用靜態日期。 – SearchForKnowledge

1

爲什麼轉換?您應該罰款:

DateTime dt = Convert.ToDateTime(strDueDate); //strDueDate = '03-25-2015' 
if (dt.CompareTo(DateTime.Now) < 0) 
{ 
    dvShowReopen.Visible = false; 
} 
4

如果你想找僅日期部分與對比對比對今天句話,你可以用你的dtDate property,並與DateTime.Today比較。

if (dt.Date < DateTime.Today) 

如果您尋找與dt和當前本地時間全面參與比較,只是Now property進行比較。

if (dt < DateTime.Now) 

您不需要這些字符串表示法。每次您通過比較另一個DateTime生成DateTime的字符串表示形式時,應該意識到您正在執行某些操作錯誤

讓我們一行一行看看你的代碼是什麼正在做的。

DateTime dt = Convert.ToDateTime("03-25-2015"); 

這條線將產生一個DateTime(你是幸運的,這是你的CurrentCulturestandard date and time format)爲25/3/2015 12:00:00 AM。由於您的字符串沒有時間部分,因此默認將是午夜

string strToday = DateTime.Now.ToString("mm-dd-yyyy"); 

這會爲您的當前本地時間和分鐘的字符串(月),日和年。由於mm specifier爲分鐘數,但MM specifier爲幾個月。當你運行這個代碼時,看起來像你當前的本地時間分鐘是9。 (基於下一行

DateTime dt1 = Convert.ToDateTime(strToday); 

該行根據您03-09-2015字符串將產生一個DateTime(因爲前行生成此字符串),並因爲你的字符串仍然沒有任何時間的一部分,它會產生9/3/2015 12:00:00 AM作爲DateTime

1

試試這個

DateTime dt = Convert.ToDateTime(strDueDate); 
if ((dt - DateTime.Now).TotalDays < 1) 
{ 
    dvShowReopen.Visible = false; 
} 
0

又一個關於如何做到這一點的思想......

if (DateTime.TryParse(strDueDate, out dt)) 
    dvShowReopen.Visible = (dt.CompareTo(DateTime.Now) < 0); 
else 
    dvShowReopen.Visible = false; 
相關問題