我正在尝试以下操作:
if (e.CreatedDate == "1/1/0001 12:00:00 AM")
但这给了我一个错误,说我无法将日期与字符串进行比较。我怎样才能做到这一点,以便我检查 CreatedDate 是否等于“1/1/0001 12:00:00 AM”,这是我猜的默认值?
我正在尝试以下操作:
if (e.CreatedDate == "1/1/0001 12:00:00 AM")
但这给了我一个错误,说我无法将日期与字符串进行比较。我怎样才能做到这一点,以便我检查 CreatedDate 是否等于“1/1/0001 12:00:00 AM”,这是我猜的默认值?
您可以使用DateTime.MinValue
,它具有完全相同的值:
if (e.CreatedDate == DateTime.MinValue)
要检查它是否等于默认值,可以使用default关键字:
if (e.CreatedDate == default(DateTime))
“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))
使用 DateTime.MinValue
if (e.CreatedDate.Equals(DateTime.MinValue))
我假设 e.CreateDate 是 DateTime 类型。
试试看:
if (e.CreatedDate == DateTime.Parse("1/1/0001 12:00:00 AM"))
如果您的目标是比较它是否等于最小日期,那么只需将其与 DateTime.MinValue 进行比较。上面的例子更通用。
您可以使用以下命令检查默认值DateTime.MinValue
:
if (e.CreatedDate == DateTime.MinValue)
您应该使用 DateTime.Compare(DateTime, DateTime) 函数,该函数返回一个整数。例如。
if (DateTime.Compare(DateTime.MinValue, e.CreatedDate) == 0){
...
}
也许你需要一个字符串比较,所以你可以这样做
e.CreatedDate.ToString(FORMAT)=="1/1/0001 12:00:00 AM"
此条件不适用于 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
});
如果日期类型不同,则比较可能不起作用。为确保种类匹配:
if(e.CreatedDate.ToUniversalTime() == default(DateTime).ToUniversalTime())
您需要将“1/1/0001 12:00:00 AM”转换为日期格式,以便在您的 if 中进行比较。
if(e.CreatedDate == ((Date)"1/1/0001 12:00:00 AM"))