比较DateTime以触发代码的最佳方法

时间:2017-04-25 04:14:09

标签: c# asp.net-mvc datetime

在特定格式中比较两个DateTime的最佳方法是什么,如果DateTime已经过去,则触发代码。

我的日期时间格式为4/26/2017 10:00:00 AM

    DateTime currentDateTime = DateTime.Now;
    DateTime eventDateTime = DateTime.Parse("4/26/2017 10:00:00 AM");

int result = DateTime.Compare(currentDateTime, eventDateTime);

if (result < 0)
    Response.Write( "is earlier than Do Nothing");
else if (result == 0)
    Response.Write("is the same time as: Do Nothing");         
else
    Response.Write("Time is greater, Trigger Action ");

以上代码是否可以进行比较,或者我们可以改进它。

3 个答案:

答案 0 :(得分:2)

对于我的观点,您建议的方法是比较C#中2 DateTime个变量的最有效和最可接受的方法,考虑到如果2个日期也相等则需要采取行动。

旁注

如果您只需要在没有相同条件的情况下比较2 DateTime,您可以写下:

if (currentDateTime < eventDateTime)
    Response.Write("is earlier than Do Nothing");
else
    Response.Write("Time is greater, Trigger Action");   

更清洁,更有效率。

答案 1 :(得分:0)

您可以使用嵌套if else语句,如下所示:

if (currentDateTime < eventDateTime)
   Response.Write("is earlier than Do Nothing");
else if(currentDateTime > eventDateTime)
   Response.Write("time is greater, Trigger Action");   
else
   Response.Write("is the same time as: Do Nothing");

答案 2 :(得分:0)

要比较Dates,您的方法是有效的,因为根据MSDN

CompareTo方法比较当前实例的Ticks属性和值,但忽略它们的Kind属性。在比较DateTime对象之前,请确保对象表示同一时区中的时间。

因为它比较了两个DateTime实例的Ticks,所以它是比较的有效方法。

作为旁注,如果要查找DateTime实例之间的间隔,则可以使用DateTime.Subtraction,它将提供两个DateTime实例的TimeSpan。因此,您可以找到他们minutes, hours, days, seconds, milliseconds by using TimeSpan properties的完全差异。

DateTime date1 = new DateTime(2010, 1, 1, 8, 0, 15);
DateTime dateNow = DateTime.Now;

TimeSpan interval = dateNow.Subtract(date1);

double totalHours= interval.TotalHours;
double totalMinutes = interval.TotalMinutes;
double totalSeconds= interval.TotalSeconds;
double totalMilliseconds= interval.TotalMilliseconds;