如何使用 moment.js 获取 2 个日期(以年、月和日为单位)之间的差异

2024-04-15

如何使用 moment.js 获取以年、月和日为单位的 2 个日期之间的差异? 例如之间的区别4/5/2014 & 2013年2月22日应计算为1年1月14天.


Moment.js 无法直接处理这种情况。它确实允许您获取两个时刻之间的差异,但结果是经过的时间(以毫秒为单位)。时刻确实有一个Duration http://momentjs.com/docs/#/durations/对象,但它将一个月定义为 30 天的固定单位 - 我们知道情况并非总是如此。

幸运的是,已经创建了一个插件,名为《精确范围》 http://momentjs.com/docs/#/plugins/preciserange/,它做了正确的事情。看着来源 https://github.com/codebox/moment-precise-range/blob/master/readable-range.js,它做了类似的事情虎三郎的回答 https://stackoverflow.com/a/26064265/634824- 但它正确地考虑了该月中需要调整的天数。

在您的项目中包含 moment.js 和此插件 (read-range.js) 后,您可以像这样简单地调用它:

var m1 = moment('2/22/2013','M/D/YYYY');
var m2 = moment('4/5/2014','M/D/YYYY');
var diff = moment.preciseDiff(m1, m2);
console.log(diff);

输出为“1年1月14天”

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

如何使用 moment.js 获取 2 个日期(以年、月和日为单位)之间的差异 的相关文章

随机推荐

  • 领域文件的大小是如何发展的?

    领域文件的大小是如何发展的 首先 我有一个包含多个属性的领域文件 其中一个是包含 860 个条目的数组 每个数组条目又包含几个属性 一个数组属性声明条目的名称 我观察到以下情况 如果名称属性为 Criteria A1 直到 Criteria
  • SKReceiptRefreshRequest 每次都询问密码

    我在用SKReceiptRefreshRequest验证来自服务器的收据 问题是每次提示密码时它都会询问我 谁能帮我建议一种更好的方法来验证用户收据 这就是我正在做的事情 我正在使用refreshReceipt当应用程序启动时 void r
  • 如何将 GridLayout.Spec 用于扩展多行的列?

    我正在尝试动态创建一个 2 行 4 列的表 但每种情况下行和列的大小不应相同 也许我会附上一张图片 我想 据我了解 当我不使用 XML 标记来使用 setLayoutParams 中的 GridLayout Spec 来实现此目的时 但我不
  • 如何让属性设置器通过SQL函数发送值

    我试图在 Rails 生成其 sql 查询之前 使 ActiveRecord 模型中的属性设置器将其值包装在 text2ltree postgres 函数中 例如 post path 1 2 3 post save 应该生成类似的东西 UP
  • 对象“_Application”的方法“VBE”失败

    我的一位客户在运行下面的 Excel VBA 代码时遇到问题 他收到以下错误Method VBE of object Application failed 但只有一次 在他打开 VBE 后 它开始工作 而且 直到昨天 它还对他有效 他正在使
  • 如何在 Angular 4 中为数字管道指定语言环境千位分隔符

    例如 如何为 Angular 4 中的数字管道指定 覆盖默认 区域设置 千位分隔符 p total number 角度 5 从 Angular 5 开始 区域设置参数已添加到十进制管道中 如官方文档中所示 https angular io
  • 将多个 go 例程的响应获取到数组中

    我需要从多个 go 例程获取响应并将它们放入一个数组中 我知道通道可以用于此目的 但是我不确定如何确保所有 go 例程都已完成结果的处理 因此我正在使用等待组 Code func main log Info Collecting ints
  • 允许使用 Angular FileSaver.js 选择目录

    我在用文件保存器 js https github com eligrey FileSaver js从 Angular 保存文件 但是 我想允许用户选择目录 我怎样才能做到这一点 我不相信这是可能的 浏览器可以选择是否向用户显示 另存为 对话
  • 找不到模块“rxjs/subject/BehaviorSubject”

    我正在使用 Angular 2 当我使用这两者中的任何一个时 我的程序运行良好 import BehaviorSubject from rxjs Rx import BehaviorSubject from rxjs 但是 我尝试使用以下方
  • 从 Delphi 组件捕获 WM_COPYDATA

    我正在尝试编写一个组件 通过 WM COPYDATA 在应用程序之间发送字符串消息 我想捕获 WM COPYDATA 但这不起作用 TMyMessage class TComponent private Private declaratio
  • 如何将 Liquid 标签突出显示在有序列表中?

    这就是我want页面为 ol li first li li second code code li li third li ol 这就是我正在写的 1 first 2 second highlight ruby code here endh
  • 验证外键时 Accepts_nested_attributes_for 出现问题

    我正在使用 Ruby on Rails v3 2 2 我想解决使用时与外键验证相关的问题accepts nested attributes for and validates associated回报率方法 也就是说 我有以下模型类 cla
  • SQLite 区分大小写的搜索,带有整理 nocase 字段

    我有一个数据库 我无法更改 它有一个整理 nocase 字段 name string collate nocase 我需要对此区分大小写的字段进行搜索 这可以通过 整理 nocase 实现吗 Thanks Just 切换排序规则 http
  • SQL - 返回有限的行数,但返回完整的行数

    场景 我需要从 Visual FoxPro 数据库中提取信息 但是 对此运行大型查询可能会导致系统锁定 为了解决这个问题 我们设置了限制 如果查询运行超过一定时间 则取消查询 并限制它将返回的行数 有没有办法使用 SELECT TOP 进行
  • 是否可以使用 HTML5 创建垂直仪表?

    通常 如果我创建
  • 当用户更改活动进程时触发事件

    当程序用户将活动窗口更改为不同进程的窗口时 是否有一个事件或创建事件的方法会触发 如果没有这样的事件 那么制作类似的东西的最佳方法是什么 我目前有一个每 3 秒运行一次 Process GetCurrentProcess 的计时器 但我正在
  • dll 中的 Delphi 表单

    将具有完整功能的Form放在dll中是个好主意吗 主应用程序将调用返回表单对象的 dll 函数 在 Delphi 中执行此操作的公认方法是使用包而不是 DLL 包本质上是 DLL 但具有 Delphi 特定功能 允许跨包边界使用 VCL 对
  • 当增量值重新开始时如何排除行?

    我是一个新手海报 但花了很多时间在这里研究答案 我不太清楚如何使用 SQL Server 2008 R2 创建 SQL 结果集 它可能应该使用更现代版本的超前 滞后 我试图根据一列的排序来聚合数据 但每个序列中可能有不同数量的实例 我知道序
  • 是否可以在远程 ssh 命令中使用变量?

    我想在远程计算机上按顺序执行多个命令 并且后面的一些命令依赖于前面的命令 在最简单的例子中 我得到了这个 ssh my server echo this is my server abc 2 this is my server abc 2
  • 如何使用 moment.js 获取 2 个日期(以年、月和日为单位)之间的差异

    如何使用 moment js 获取以年 月和日为单位的 2 个日期之间的差异 例如之间的区别4 5 2014 2013年2月22日应计算为1年1月14天 Moment js 无法直接处理这种情况 它确实允许您获取两个时刻之间的差异 但结果是