比较asp.net中的日期

Kin*_*ngs 3 asp.net datetime

我想比较两个日期.从这两个日期开始,我只使用日期组件ToShortDateString(),如下所示.现在的问题是我在比较这两个日期.它的投掷错误 -

"运算符> =不能应用于字符串和字符串类型的操作数."

DateTime srtdate = Convert.ToDateTime(allitem["StartDate"].Text.ToString());
DateTime srtdate = Convert.ToDateTime(allitem["StartDate"].Text.ToString());

 (DateTime.Now.ToShortDateString() >= srtdate.ToShortDateString()) 
Run Code Online (Sandbox Code Playgroud)

我需要只比较日期组件,而不是日期和时间.

请建议什么是替代方式.谢谢

致JON: -

(我通过你所解释的所有内容,并希望了解你实际要做的是什么.只是为了澄清更多并进行最后检查,我将展示一个例子.)我有一个网络界面,我给出了一个开始日期和结束XYZ名称的日期(注意我只能在此输入日期,而不是时间).

开课日期 - 2012年2月22日结束日期 - 2012年2月22日

现在在后端(代码),如果开始日期和结束日期与当前日期相同或当前日期在开始日期和结束日期之间,我想要设置ACTIVE标志,否则.我给出了这样的条件: -

if ((DateTime.Today >= strdate.Date) && (DateTime.Today <= enddate.Date))
                    lblCondition.Text = "CHECKED";
Run Code Online (Sandbox Code Playgroud)

现在当我调试代码时,

无论DateTime.Todaystrdate.Date给出值2/22/2012 12:00:00 AM.

所以,Jon我的问题是: - '今天'和'约会'是否按照上述要求工作,其中只使用日期组件.我希望它会.

非常感谢你以前所有的解释.

Jon*_*eet 7

为什么要转换为字符串表示?如果您只想将日期部分与两个DateTime值进行比较,只需Date在每个值上使用该属性:

if (x.Date >= y.Date)
Run Code Online (Sandbox Code Playgroud)

而该Today物业相当于DateTime.Now.Date.

DateToday剥离的时间部分,留下午夜的时刻.你仍然有一个能够代表时间的类型并不理想,但这只是DateTimeAPI的工作方式:(

需要注意的是,你通常应该避免使用DateTime.NowDateTime.Today在Web应用程序,除非你真正使用系统默认的时区为天界还舒服.用户对"今天"的想法可能与服务器的概念不同.

您应该避免使用字符串转换,除非你的目标是真正得到一个文本表示.

当然另一种选择是使用我正在构建的日期/时间库,Noda Time,你可以使用一种LocalDate类型 - 显然这使你更清楚你只对日期而不是时间感兴趣.

编辑:作为OP似乎不相信Date忽略时间部分,这里是一个例子:

using System;

public class Test
{
    static void Main()
    {
        // Two DateTime values with different times but
        // on the same date
        DateTime early = new DateTime(2012, 2, 22, 6, 0, 0);
        DateTime late = new DateTime(2012, 2, 22, 18, 0, 0);

        Console.WriteLine(early == late); // False
        Console.WriteLine(early.Date == late.Date); // True
    }    
}
Run Code Online (Sandbox Code Playgroud)