如何在C#中比较不带时间部分的日期时间

Tho*_*mas 1 c# datetime

我试过这种方式,但出现错误。这是我的代码。

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
    DateTime _dateJoin = DateTime.ParseExact(value.ToString(), "MM/dd/yyyy", null);
    DateTime _CurDate = DateTime.ParseExact(DateTime.Now.ToString(), "MM/dd/yyyy", null);

    int cmp = _dateJoin.CompareTo(_CurDate);
    if (cmp > 0)
    {
        return ValidationResult.Success;
    }
    else if (cmp < 0)
    {
        return new ValidationResult(ErrorMessage);
    }
    else
    {
        return ValidationResult.Success;
    }
}
Run Code Online (Sandbox Code Playgroud)

值可变具有时间部分有效的日期太。谢谢

Jam*_*Dev 5

仅比较日期部分:

int cmp = _dateJoin.Date.CompareTo(_CurDate.Date);
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 5

您只需要比较DateTime.TodayDateTime.Date

if(_dateJoin.Date > DateTime.Today)
{
    // ...
}
else
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

更新

object值具有Date = {03-16-2016 12:00:00 AM}执行此行时的日期

DateTime _dateJoin =   DateTime.ParseExact(value.ToString(), "MM/dd/yyyy", null);
Run Code Online (Sandbox Code Playgroud)

然后我收到错误消息,例如String未被识别为有效的DateTime。–

那是一个不同的问题,您必须使用正确的格式提供程序:

DateTime _dateJoin = DateTime.Parse(value.ToString(), CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

ParseExact(在这种情况下没有必要):

DateTime _dateJoin = DateTime.ParseExact(value.ToString(), "MM-dd-yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)