49

我正在尝试以下操作:

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

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

4

11 回答 11

123

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

if (e.CreatedDate == DateTime.MinValue) 
于 2013-07-09T13:27:46.767 回答
14

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

if (e.CreatedDate == default(DateTime))
于 2013-07-09T13:27:55.240 回答
10

“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

于 2013-07-09T13:28:21.310 回答
7

使用 DateTime.MinValue

if (e.CreatedDate.Equals(DateTime.MinValue))
于 2013-07-09T13:28:34.927 回答
4

我假设 e.CreateDate 是 DateTime 类型。

试试看:

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

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

于 2013-07-09T13:30:55.067 回答
3

您可以使用以下命令检查默认值DateTime.MinValue

if (e.CreatedDate == DateTime.MinValue) 
于 2013-07-09T13:28:45.633 回答
3

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

if (DateTime.Compare(DateTime.MinValue, e.CreatedDate) == 0){
   ...
}
于 2013-07-09T13:29:24.813 回答
1

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

e.CreatedDate.ToString(FORMAT)=="1/1/0001 12:00:00 AM"
于 2013-07-09T13:43:32.217 回答
1

此条件不适用于 Lambdas: (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 
}); 
于 2020-06-06T15:55:54.710 回答
0

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

if(e.CreatedDate.ToUniversalTime() == default(DateTime).ToUniversalTime())
于 2021-07-02T09:48:47.153 回答
-3

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

if(e.CreatedDate == ((Date)"1/1/0001 12:00:00 AM"))
于 2013-07-09T13:31:35.460 回答