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,如需转载请自行联系原作者

计算两个日期相差几年几个月相关推荐

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

    @创建于:20211117 文章目录 1.背景 2.代码示例 2.1 代码 2.1 输出结果 3.结果讨论 1.背景 经常遇到两个日期之间相差多个年,多少月,多少日. 方式1:使用datetime d ...

  2. 计算两个日期相差的小时差

    计算出:两个日期之间的相差天数,乘小时数 <%@ page language="java" import="java.util.*" pageEncodi ...

  3. 计算两个日期相差的天数

    JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...

  4. java计算两个日期相差月数

    1.计算两个日期相差月数,不满一月按一月算 import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  5. mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

  6. java 日期只计算年月日大小_Java 计算两个日期相差多少年月日

    JDK7及以前的版本,计算两个日期相差的年月日比较麻烦. JDK8新出的日期类,提供了比较简单的实现方法. /*** 计算2个日期之间相差的 相差多少年月日 * 比如:2011-02-02 到 201 ...

  7. java 计算日期相差天数_Java 计算两个日期相差的天数

    当我们需要计算两个日期相差的天数怎么办呢,今天我们就来用 Java 比较两个日期相差的天数,最简单的方法,直接上代码: 第一种,Date类型计算public static int differentD ...

  8. python判断天数_Python计算两个日期相差天数的方法示例

    本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...

  9. mysql计算两个月份之间的差值_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

最新文章

  1. 20 年前毁誉参半的网游《传奇》,背后是怎样的故事?
  2. g++ 安装python_mac编译安装faiss
  3. 【iOS数据持久化】偏好设置(UserDefaults)
  4. hdu 4101(bfs+博弈)
  5. 用PHP删除一条记录mysql,php – 如何使用jquery删除mysql记录
  6. 对刺客历史的一种颠覆:说说《最后的刺客》
  7. Qt 调用Python引擎混合编程
  8. 原子变量与非阻塞同步机制
  9. <EDEM 常见问题01>EDEM 2018-Fluent 17.0 耦合接口编译(快速上手版)
  10. 自学WEB开发第一天:工欲善其事,必先利其器。基于VB语言,纠结于VS和VS code之间
  11. TP笔记5、模型 文件上传 分页 会话技术与验证码
  12. hdu 4365 瞎涂颜色 数论
  13. 大话西游手游服务器地址修改,大话西游手游怎么转区?大话西游手游转区移民条件一览...
  14. 2022-2028年中国保健食品行业市场运营格局及前景战略分析报告
  15. UIImageView 显示不规则图片,类似微信聊天气泡图片展示效果
  16. python画狗_Python 画一只单身狗作为情人节礼物
  17. 网上跨行转账将实时生效 第三方支付前景渺茫
  18. 安装失败,CentOS 7 安装 安卓模拟器
  19. Unity中OnTriggerEnter2D 和OnCollisionEnter2D 的使用情形及容易掉的坑
  20. 给中国学生的第三封信

热门文章

  1. FTP匿名登录或弱口令漏洞及服务加固
  2. Eclipse 中 SDK无法更新---解决方法
  3. 团队编程项目3-学生成绩管理系统-模块开发过程
  4. 数据库迁移——自动迁移Enable-Migrations
  5. 【实例】去哪儿搜索实例实现
  6. Calendar日历小程序
  7. 邮件附件在线预览——HTML Filter
  8. 利用 sys.sysprocesses 检查 Sql Server的阻塞和死锁
  9. Harris及Shi-Tomasi原理及源码解析
  10. 图形算法 - 模糊函数比较,Blur Function Compare