两个日期之间的月份差异

2024-04-04

C# 如何计算两个日期之间的月份差异?

有没有相当于VB的DateDiff()C# 中的方法。我需要找出相隔数年的两个日期之间的月份差异。文档说我可以使用TimeSpan like:

TimeSpan ts = date1 - date2;

但这给了我以天为单位的数据。我不想用这个数字除以 30因为并非每个月都是 30 天,而且两个操作数值彼此相距甚远,恐怕除以 30 可能会得到错误的值。

有什么建议么?


假设月份中的日期不相关(即 2011.1.1 和 2010.12.31 之间的差异为 1),其中 date1 > date2 给出正值,date2 > date1 给出负值

((date1.Year - date2.Year) * 12) + date1.Month - date2.Month

或者,假设您想要两个日期之间的“平均月份”的大致数量,则以下内容应该适用于除非常大的日期差异之外的所有日期差异。

date1.Subtract(date2).Days / (365.25 / 12)

请注意,如果您要使用后一种解决方案,那么您的单元测试应说明您的应用程序设计使用的最宽日期范围,并相应地验证计算结果。


更新(感谢Gary https://stackoverflow.com/users/393004/gary)

如果使用“平均月份”方法,“每年平均天数”的稍微准确的数字是365.2425 https://en.wikipedia.org/wiki/Year.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个日期之间的月份差异 的相关文章

随机推荐

  • 使用 TOpenDialog 选择目录

    我真的很想知道使用 TOpenDialog 选择目录的各种方法 无论是下载新组件还是使用 Delphi 提供的内容 但最好使用 Delphi 提供的内容 在此之前 我一直在使用 SelectDirectory 命令 但我认为对于我的程序的用
  • 如何在Python中使库异步

    在我的工作中 他们 利用 龙卷风 但他们没有异步库 是什么让库变得异步 以便它更适合龙卷风之类的东西 有没有什么好的例子或者我猜你在做什么 enter or exit 这可以表明您没有阻止 我发现很难将一些材料拼凑在一起 如果您的库不是异步
  • 如果定义了构造函数,pytest 跳过测试类

    我有以下通过 py test 运行的单元测试代码 构造函数的存在会使整个类在运行时跳过 py test v s 已收集 0 件 已跳过 1 件 谁能向我解释 py test 的这种行为吗 我有兴趣了解 py test 行为 我知道不需要构造
  • UITextView文本背景颜色

    我正在尝试获得一个透明的 UITextView 并且我知道如何设置它 我还想要的是在已显示的文本下方有一个彩色背景 同样 文本视图背景会将整个视图矩形设置为给定的颜色 我想要的是文本下方的颜色 有什么简单的方法可以实现这样的目标吗 据我所知
  • 有没有办法在提供左值和右值重载的同时删除重复代码?

    在学习 C 时 我决定编写一个简单的模板化二叉搜索树 bst 并遇到以下问题 我希望能够构造通过向其传递一个左值来实现 bst 例如const T val和一个像这样的右值T val 同样我希望能够insert左值和右值 所以我最终得到了很
  • getChildFragmentManager() 和 viewpager

    我有同样的问题导航回 FragmentPagerAdapter gt 片段为空 https stackoverflow com questions 17672779 navigating back to fragmentpageradapt
  • Javascript 中的链表与数组

    所以我在 JS 中玩弄链表并提出以下问题 假设我们有一个数组和一个链表 都有 5000 个元素 我们想在索引 10 处插入新元素 数组方式非常简单 我们在给定索引处插入新元素 并将其余元素向前移动一个索引 所以我尝试用链表来做到这一点 并以
  • Django SplitDateTime 小部件抛出“列表”对象没有属性“条带”

    我正在尝试使用 django 创建具有开始日期时间和结束日期时间的事件 在表单中 我尝试使用 AdminSPlitDateTime 小部件分隔日期和时间输入 我希望有一些 JS 用于输入 当我尝试创建事件时 django 给我 list 对
  • IntelliJ DataGrip 如何启用添加行?

    我使用 DataGrip 有几天了 我真的很喜欢它 但它有一个可疑的行为 在我打开的某些表中 我无法添加新行 在同一数据库的其他表中它工作正常 添加行按钮已禁用 因此我无法添加新行 如果表中有行 我可以删除它们 但仍然无法添加新行 我在网上
  • ionic 应用程序构建失败,并显示错误“链接器命令失败,退出代码 1(使用 -v 查看调用)”

    当尝试使用构建时ionic run ios lc我在终端中看到以下错误 BUILD FAILED The following build commands failed Ld build emulator xXxXxXx app xXxXx
  • 如何在没有服务器或服务器端脚本的情况下创建动态访问数据库的内联网网站?

    问题是 必须在没有服务器托管的情况下创建 Intranet 网页 并且我一直在尝试使用 HTML 和 javascript 更新 Access 数据库 但这不适用于以下代码 请帮助 当以下代码从 Visual Studio 运行时 出现错误
  • 无法找到 actionbarsherlock.apk

    我正在尝试从 Eclipse 在真实设备上运行我的应用程序 添加 actionbarsherlock 作为参考后 我无法摆脱此错误 Could not find actionbarsherlock apk 这是完整的控制台输出 2013 0
  • 动态生成的按钮,点击后不被执行

    我需要生成一个动态按钮列表 我已经这样做了 并附加了一个事件处理程序 但是事件处理程序并未被执行 private void GetOptions EcoBonusRequest request var ecobonuswworkflow W
  • WiX:如果虚拟目录包含嵌套目录,如何跳过删除 iis:WebVirtualDir?

    我的msi安装和卸载共享资源 IIS虚拟目录 MyTeamServices 它工作得很好 除了在卸载过程中删除该虚拟目录 即使有人创建了嵌套虚拟目录 不是通过使用安装程序 只是 手动 当我期望看到 WiX 处理 HDD 文件夹的标准行为时
  • 饼图、条形图、线条:SVG/VML 优于 Canvas

    我需要选择一个用于 标准 图表的库 饼图 折线图和条形图 根据我的阅读 在我看来最好的格式是 SVG VML 例如 Highcharts 现在 IE 9 接受了 SVG 它正在成为所有主要浏览器的标准 重新缩放和导出似乎比 Canvas 更
  • 创建多个线程并等待所有线程完成

    如何创建多个线程并等待所有线程完成 这取决于您使用的 NET Framework 版本 NET 4 0 使用任务使线程管理变得更加容易 class Program static void Main string args Task task
  • 关于 Java 中的泛型数组创建

    刚刚发现一行代码我不太明白 List
  • 多个 Eclipse 项目中的多个 Git 分支

    我们正在从 Subversion 转换到 Git 而我在 Git 中遇到的一件事是切换分支的方法 我的理解是 无论是在命令行还是在 Eclipse 中使用 EGit 切换到不同的分支都会将 Eclipse 工作区文件夹的内容替换为所需分支的
  • Redirect::back() 在 Laravel 5.2 中不起作用

    if count data 1 return view welcome else echo dslkfjads Redirect back gt with message Username or password not Match 上述
  • 两个日期之间的月份差异

    C 如何计算两个日期之间的月份差异 有没有相当于VB的DateDiff C 中的方法 我需要找出相隔数年的两个日期之间的月份差异 文档说我可以使用TimeSpan like TimeSpan ts date1 date2 但这给了我以天为单