2015-06-03 93 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; 
相关问题