程序开发 > C# > 正文

C#计算两个日期之间的间隔

亮术网 2020-09-03 本网原创

在网站开发过程中,常常要计算两个日期之间的间隔,有时需要返回相差几天,有时又需要返回相差几小时等,以下源码返回了从年到微秒的不同值,满足各种需要。

实现的基本思想:使用 TimeSpan 类的 Subtract 方法计算出两个日期的时差,再根据时间间隔标志 flag 返回具体的时差,如果 flag 不符合方法中的任何一个值,则返回0。

 

/// <summary>
  /// 计算两个日期之间的间隔
  /// </summary>
  /// <param name="dt1">日期1</param>
  /// <param name="dt2">日期2</param>
  /// <param name="flag">间隔标志,如 h、m、s 分别表示时、分、秒</param>
  /// <returns>两个日期之间的间隔</returns>

  private int TimeDiff(DateTime dt1, DateTime dt2, string flag)
  {
    double yearLen = 365;//年的长度,365天  
    double monthLen = (365 / 12);//每个月平均的天数

  TimeSpan ts1 = new TimeSpan(dt1.Ticks);
    TimeSpan ts2 = new TimeSpan(dt2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();

  switch (flag)
    {
      case "y"://返回两个日期的年份间隔
        return Convert.ToInt32(ts.Days / yearLen);
      case "M"://返回两个日期的月份间隔
        return Convert.ToInt32(ts.Days / monthLen);
      case "d"://返回两个日期的天数间隔
        return ts.Days;
      case "h"://返回两个日期的小时间隔
        return ts.Hours;
      case "m"://返回两个日期的分钟间隔
        return ts.Minutes;
      case "s"://返回两个日期的秒钟间隔
        return ts.Seconds;
      case "ms"://返回两个的时间的微秒间隔
        return ts.Milliseconds;
      default:
        return 0;
    }
  }

只需把此方法复制到公共类中,直接调用即可,十分方便,调用方法:

TimeDiff(DateTime.Now, "2020-9-3", "h")

本文浓缩标签:C#日期间隔