C#两个日期范围内的间隔

http://www.cnblogs.com/love_study/archive/2011/04/02/2003045.html 引用地址
1
/// <summary> 2 /// 计算日期的间隔(静态类) 3 /// </summary> 4 public static class dateTimeDiff 5 { 6 #region 计算日期间隔 7 /// <summary> 8 /// 计算日期间隔 9 /// </summary> 10 /// <param name="d1">要参与计算的其中一个日期字符串</param> 11 /// <param name="d2">要参与计算的另一个日期字符串</param> 12 /// <returns>一个表示日期间隔的TimeSpan类型</returns> 13 public static TimeSpan toResult(string d1, string d2) 14 { 15 try 16 { 17 DateTime date1 = DateTime.Parse(d1); 18 DateTime date2 = DateTime.Parse(d2); 19 return toResult(date1, date2); 20 } 21 catch 22 { 23 throw new Exception("字符串参数不正确!"); 24 } 25 } 26 #endregion 27 28 #region 计算日期间隔 29 /// <summary> 30 /// 计算日期间隔 31 /// </summary> 32 /// <param name="d1">要参与计算的其中一个日期</param> 33 /// <param name="d2">要参与计算的另一个日期</param> 34 /// <returns>一个表示日期间隔的TimeSpan类型</returns> 35 public static TimeSpan toResult(DateTime d1, DateTime d2) 36 { 37 TimeSpan ts; 38 if (d1 > d2) 39 { 40 ts = d1 - d2; 41 } 42 else 43 { 44 ts = d2 - d1; 45 } 46 return ts; 47 } 48 #endregion 49 50 #region 计算日期间隔 51 /// <summary> 52 /// 计算日期间隔 53 /// </summary> 54 /// <param name="d1">要参与计算的其中一个日期字符串</param> 55 /// <param name="d2">要参与计算的另一个日期字符串</param> 56 /// <param name="drf">决定返回值形式的枚举</param> 57 /// <returns>一个代表年月日的int数组,具体数组长度与枚举参数drf有关</returns> 58 public static int[] toResult(string d1, string d2, diffResultFormat drf) 59 { 60 try 61 { 62 DateTime date1 = DateTime.Parse(d1); 63 DateTime date2 = DateTime.Parse(d2); 64 return toResult(date1, date2, drf); 65 } 66 catch 67 { 68 throw new Exception("字符串参数不正确!"); 69 } 70 } 71 #endregion 72 73 #region 计算日期间隔 74 /// <summary> 75 /// 计算日期间隔 76 /// </summary> 77 /// <param name="d1">要参与计算的其中一个日期</param> 78 /// <param name="d2">要参与计算的另一个日期</param> 79 /// <param name="drf">决定返回值形式的枚举</param> 80 /// <returns>一个代表年月日的int数组,具体数组长度与枚举参数drf有关</returns> 81 public static int[] toResult(DateTime d1, DateTime d2, diffResultFormat drf) 82 { 83 #region 数据初始化 84 DateTime max; 85 DateTime min; 86 int year; 87 int month; 88 int tempYear, tempMonth; 89 if (d1 > d2) 90 { 91 max = d1; 92 min = d2; 93 } 94 else 95 { 96 max = d2; 97 min = d1; 98 } 99 tempYear = max.Year; 100 tempMonth = max.Month; 101 if (max.Month < min.Month) 102 { 103 tempYear--; 104 tempMonth = tempMonth + 12; 105 } 106 year = tempYear - min.Year; 107 month = tempMonth - min.Month; 108 #endregion 109 #region 按条件计算 110 if (drf == diffResultFormat.dd) 111 { 112 TimeSpan ts = max - min; 113 return new int[] { ts.Days }; 114 } 115 if (drf == diffResultFormat.mm) 116 { 117 return new int[] { month + year * 12 }; 118 } 119 if (drf == diffResultFormat.yy) 120 { 121 return new int[] { year }; 122 } 123 return new int[] { year, month }; 124 #endregion 125 } 126 #endregion 127 } 128 #region 关于返回值形式的枚举 129 /// <summary> 130 /// 关于返回值形式的枚举 131 /// </summary> 132 public enum diffResultFormat 133 { 134 /// <summary> 135 /// 年数和月数 136 /// </summary> 137 yymm, 138 /// <summary> 139 /// 年数 140 /// </summary> 141 yy, 142 /// <summary> 143 /// 月数 144 /// </summary> 145 mm, 146 /// <summary> 147 /// 天数 148 /// </summary> 149 dd, 150 } 151 #endregion
1 DateTime sDate = Convert.ToDateTime("2014-1-16");
2 DateTime eDate = Convert.ToDateTime("2014-2-16");
3 int month = dateTimeDiff.toResult(sDate, eDate, diffResultFormat.mm)[0];
原文地址:https://www.cnblogs.com/wgx0428/p/3523545.html