当我尝试比较明年的日期时间时,在c#中进行日期时间比较

时间:2016-12-22 11:51:58

标签: c# date datetime

我在c#中将用户给定日期与system.datetime进行比较 如果日期已过,或者日期与system.date时间相符,则视为

if ((Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == 0 ||
     Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == -1))
{
    filenamedate = DR_FILENAME;
    fileFound = true;
}

我的问题是,如果我在2016/12/22下午3:00给出一个日期,它将在系统时间的2016/12/22 3:00 pm接受它。

如果时间已经过去,例如:系统时间是2016/12/22 3:00 pm,用户时间是2016/12/21 3:00 pm。逻辑是接受的。

但如果我给系统时间2016/12/21下午3:00和用户时间2017/12/21下午3:00 ..它再次接受。理想情况下,它应该直到系统在2017年的确切日期。 我哪里错了。

1 个答案:

答案 0 :(得分:2)

替换它:

if ((Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == 0 ||
     Convert.ToDateTime(firstTimeOFArray).ToString(@"MM\/dd\/yyyy HH:mm").CompareTo(System.DateTime.Now.ToString(@"MM\/dd\/yyyy HH:mm")) == -1))

用这个:

if (Convert.ToDateTime(firstTimeOFArray) <= DateTime.Now)

这可能是你的意思。从那时起,您将更容易理解自己代码的语义并实现您想要的目标。

请注意,对于两个DateTime的字符串表示的字典比较,需要yyyy MM dd HH mm个组件序列才能工作。