如何将C#中的日期与“1/1/0001 12:00:00 AM”进行比较)

时间:2013-07-09 13:26:50

标签: c#

我正在尝试以下方法:

if (e.CreatedDate == "1/1/0001 12:00:00 AM") 

但这给了我一个错误,说我无法将日期与字符串进行比较。我怎么能这样做,所以我检查CreatedDate是否等于“1/1/0001 12:00:00 AM”,这是我猜的默认值?

11 个答案:

答案 0 :(得分:80)

您可以使用具有完全相同值的DateTime.MinValue

if (e.CreatedDate == DateTime.MinValue) 

答案 1 :(得分:8)

“1/1/0001 12:00:00 AM”这是string数据类型。所以将其转换为DateTime

if (e.CreatedDate == Convert.ToDateTime("1/1/0001 12:00:00 AM"))
{
    //--- To Dos
}

但.NET Framework提供了一种使用

进行检查的默认方法

if (e.CreatedDate.Equals(DateTime.MinValue))

MSDN

答案 2 :(得分:7)

要检查它是否等于默认值,您可以使用default关键字:

if (e.CreatedDate == default(DateTime))

答案 3 :(得分:5)

使用DateTime.MinValue

if (e.CreatedDate.Equals(DateTime.MinValue))

答案 4 :(得分:4)

我假设e.CreateDate的类型为DateTime。

尝试如下:

if (e.CreatedDate == DateTime.Parse("1/1/0001 12:00:00 AM"))

如果您的目标是比较它是否等于最小日期,那么只需将它与DateTime.MinValue进行比较。上面的例子更通用。

答案 5 :(得分:3)

您可以使用DateTime.MinValue检查默认值:

if (e.CreatedDate == DateTime.MinValue) 

答案 6 :(得分:3)

您应该使用DateTime.Compare(DateTime,DateTime)函数,该函数返回一个整数。 例如

if (DateTime.Compare(DateTime.MinValue, e.CreatedDate) == 0){
   ...
}

答案 7 :(得分:1)

也许你需要一个字符串比较,所以你可以这样做

e.CreatedDate.ToString(FORMAT)=="1/1/0001 12:00:00 AM"

答案 8 :(得分:1)

此条件不适用于Lambda:(e.CreatedDate == DateTime.MinValue)。例如,

dbset.Select(e => new 
{ 
    Date = e.CreatedDate == DateTime.MinValue ? DateTime.UtcNow : e.CreatedDate 
}); 

因此,我不得不使用default关键字:

dbset.Select(e => new 
{ 
    Date = e.CreatedDate == default(DateTime) ? DateTime.UtcNow : e.CreatedDate 
}); 

答案 9 :(得分:0)

如果日期类型不同,则比较可能不起作用。确保种类匹配:

if(e.CreatedDate.ToUniversalTime() == default(DateTime).ToUniversalTime())

答案 10 :(得分:-2)

您需要将“1/1/0001 12:00:00 AM”置于日期格式中,以便在if中进行比较。

if(e.CreatedDate == ((Date)"1/1/0001 12:00:00 AM"))