我在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
并与今天进行比较。如果它小于今天,则将可见性设置为false。
我怎样才能实现它。
答案 0 :(得分:4)
如果您只查找日期部分与与今天比较句子的比较,您可以使用dt
的{{3}}并将其与{{进行比较3}}
if (dt.Date < DateTime.Today)
如果您要查找与dt
的完整部分比较以及当前的当地时间,请将其与Date
property进行比较。
if (dt < DateTime.Now)
您不需要这些字符串表示。每当你使用比较另一个DateTime生成DateTime的字符串表示时,你应该知道你正在做一些错误的。
让我们逐行查看您的代码。
DateTime dt = Convert.ToDateTime("03-25-2015");
这一行会生成一个DateTime
(您很幸运,这是DateTime.Today
的Now
property)25/3/2015 12:00:00 AM
。由于您的字符串没有时间部分,因此默认情况下它将是午夜 。
string strToday = DateTime.Now.ToString("mm-dd-yyyy");
这将为您当前的当地时间生成一个字符串,分钟(不月),日和年。因为standard date and time format是分钟,但CurrentCulture
是几个月。运行此代码时,看起来当前的本地时间分钟为9
。 (基于下一行)
DateTime dt1 = Convert.ToDateTime(strToday);
此行将根据您的03-09-2015
字符串生成DateTime(因为上一行会生成此字符串),并且由于您的字符串仍然没有任何时间部分,因此它会生成9/3/2015 12:00:00 AM
as DateTime
。
答案 1 :(得分:2)
此代码不起作用吗?
DateTime dt = new DateTime(2015, 3, 25);
DateTime dt1 = DateTime.Now;
if (dt < dt1)
{
dvShowReopen.Visible = false;
}
答案 2 :(得分:1)
为什么转换?你应该没问题:
DateTime dt = Convert.ToDateTime(strDueDate); //strDueDate = '03-25-2015'
if (dt.CompareTo(DateTime.Now) < 0)
{
dvShowReopen.Visible = false;
}
答案 3 :(得分:1)
试试这个
DateTime dt = Convert.ToDateTime(strDueDate);
if ((dt - DateTime.Now).TotalDays < 1)
{
dvShowReopen.Visible = false;
}
答案 4 :(得分:0)
关于如何做到的另一个想法...
if (DateTime.TryParse(strDueDate, out dt))
dvShowReopen.Visible = (dt.CompareTo(DateTime.Now) < 0);
else
dvShowReopen.Visible = false;