日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算两个日期相差几年几个月

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算两个日期相差几年几个月 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

public static class dateTimeDiff
{
??? /// <summary>
??? /// 計算日期間隔
??? /// </summary>
??? /// <param name="d1">要參與計算的其中一個日期字符串</param>
??? /// <param name="d2">要參與計算的另一個日期字符串</param>
??? /// <returns>一個表示日期間隔的TimeSpan類型</returns>
??? public static TimeSpan toResult(string d1, string d2)
??? {
??????? try
??????? {
??????????? DateTime date1 = DateTime.Parse(d1);
??????????? DateTime date2 = DateTime.Parse(d2);
??????????? return toResult(date1, date2);
??????? }
??????? catch
??????? {
??????????? throw new Exception("字符串參數不正確!");
??????? }
??? }
??? /// <summary>
??? /// 計算日期間隔
??? /// </summary>
??? /// <param name="d1">要參與計算的其中一個日期</param>
??? /// <param name="d2">要參與計算的另一個日期</param>
??? /// <returns>一個表示日期間隔的TimeSpan類型</returns>
??? public static TimeSpan toResult(DateTime d1, DateTime d2)
??? {
??????? TimeSpan ts;
??????? if (d1 > d2)
??????? {
??????????? ts = d1 - d2;
??????? }
??????? else
??????? {
??????????? ts = d2 - d1;
??????? }
??????? return ts;
??? }

??? /// <summary>
??? /// 計算日期間隔
??? /// </summary>
??? /// <param name="d1">要參與計算的其中一個日期字符串</param>
??? /// <param name="d2">要參與計算的另一個日期字符串</param>
??? /// <param name="drf">決定返回值形式的枚舉</param>
??? /// <returns>一個代表年月日的int數組,具體數組長度與枚舉參數drf有關</returns>
??? public static int[] toResult(string d1, string d2, diffFormat drf)
??? {
??????? try
??????? {
??????????? DateTime date1 = DateTime.Parse(d1);
??????????? DateTime date2 = DateTime.Parse(d2);
??????????? return toResult(date1, date2, drf);
??????? }
??????? catch
??????? {
??????????? throw new Exception("字符串參數不正確!");
??????? }
??? }
??? /// <summary>
??? /// 計算日期間隔
??? /// </summary>
??? /// <param name="d1">要參與計算的其中一個日期</param>
??? /// <param name="d2">要參與計算的另一個日期</param>
??? /// <param name="drf">決定返回值形式的枚舉</param>
??? /// <returns>一個代表年月日的int數組,具體數組長度與枚舉參數drf有關</returns>
??? public static int[] toResult(DateTime d1, DateTime d2, diffFormat drf)
??? {
??????? #region 數據初始化
??????? DateTime max;
??????? DateTime min;
??????? int year;
??????? int month;
??????? int tempYear, tempMonth;
??????? if (d1 > d2)
??????? {
??????????? max = d1;
??????????? min = d2;
??????? }
??????? else
??????? {
??????????? max = d2;
??????????? min = d1;
??????? }
??????? tempYear = max.Year;
??????? tempMonth = max.Month;
??????? if (max.Month < min.Month)
??????? {
??????????? tempYear--;
??????????? tempMonth = tempMonth + 12;
??????? }
??????? year = tempYear - min.Year;
??????? month = tempMonth - min.Month;
??????? #endregion
??????? #region 按條件計算
??????? if (drf == diffFormat.Day)
??????? {
??????????? TimeSpan ts = max - min;
??????????? return new int[] { ts.Days };
??????? }
??????? if (drf == diffFormat.Month)
??????? {
??????????? return new int[] { month + year * 12 };
??????? }
??????? if (drf == diffFormat.Year)
??????? {
??????????? return new int[] { year };
??????? }
??????? return new int[] { year, month };
??????? #endregion
??? }
}
/// <summary>
/// 關于返回值形式的枚舉
/// </summary>
public enum diffFormat
{
??? /// <summary>
??? /// 年數和月數
??? /// </summary>
??? YearMonth,
??? /// <summary>
??? /// 年數
??? /// </summary>
??? Year,
??? /// <summary>
??? /// 月數
??? /// </summary>
??? Month,
??? /// <summary>
??? /// 天數
??? /// </summary>
??? Day,
}

?

例:
??????????????? DateTime dt1 = DateTime.Parse(dt.Rows[0]["mtime"].ToString());
??????????????? DateTime dt2 = DateTime.Parse(dt.Rows[count - 1]["mtime"].ToString());

??????????????? int[] kk = dateTimeDiff.toResult(dt1, dt2, diffFormat.Month);

?




本文轉自94cool博客園博客,原文鏈接:http://www.cnblogs.com/94cool/archive/2011/06/13/2079795.html,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的计算两个日期相差几年几个月的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。