今日写程序时,需要判断一个日期是在当日日期之前还是之后的问题,于是自然地想到了Vb中的的那个DateDiff函数,想也拿来用用,但C#里好象没有这个函数,于是搜了一下,有位大哥写了如下的函数:private double DateDiff(string howtocompare, System.DateTime startDate, System.DateTime endDate) 

   double diff=0; 
   System.TimeSpan TS = new System.TimeSpan(endDate.Ticks-startDate.Ticks);    switch (howtocompare.ToLower()) 
   { 
    case "year": 
     diff = Convert.ToDouble(TS.TotalDays/365); 
     break; 
    case "month": 
     diff = Convert.ToDouble((TS.TotalDays/365)*12); 
     break; 
    case "day":
     diff = Convert.ToDouble(TS.TotalDays); 
     break; 
    case "hour": 
     diff = Convert.ToDouble(TS.TotalHours); 
     break; 
    case "minute": 
     diff = Convert.ToDouble(TS.TotalMinutes); 
     break; 
    case "second": 
     diff = Convert.ToDouble(TS.TotalSeconds); 
     break; 
   }   return diff;
}  但我觉得此代码不够严谨,却又找不出更好的方法来!
另外开始,我也想到了用操作符“< ”或者“>”
比如:
if(dateTime1 < dateTime2)
{
  //do something...
}
但C#好象不支持这样,于是我想到了C#里面的操作符重载,但具体实现我没有把握,我想问问线上的各位大虾,有没有更好的Idea阿? 

解决方案 »

  1.   

    参见timespan
    timespan myTspan = datetime1 - datetime2;
    然后判断myTspan的属性就好了。
      

  2.   

    DateTime结构实现了 IComparable,也就是说,
    if(dateTime1 < dateTime2)
    {
      //do something...
    }
    是可以的。另外,在C#中引用Microsoft.VisualBasic.dll,可以直接使用VB.NET中的DateDiff()函数
    Microsoft.VisualBasic.DateAndTime.DateDiff()
      

  3.   

    两个datetime一减得到timespan 再判断timespan的属性也一样好用的
      

  4.   

    TimeSpan time1=Convert.toDatetime("2004-10-11")-Convert.toDatetime("2004-1-11")