【问题标题】:Exact Month difference between two dates - MomentJS两个日期之间的确切月份差 - MomentJS
【发布时间】:2020-03-19 10:16:14
【问题描述】:

我需要知道月份之间的差异,但考虑到有些月份只有 28 天,我无法根据天数进行计算。

我真的需要带来月份之间的差异。

格式:YYYY/DD/MM

旧:2019/01/19

新:2020/03/19

之间:14

Example 01:
Old Date: 19/03/2020
New Date: 31/03/2020
Between: 0

Example: 02:
Old Date: 19/03/2020
New Date: 01/04/2020
Between: 1

Example: 03:
Old Date: 19/03/2020
New Date: 30/04/2020
Between: 1

Example: 04:
Old Date: 19/03/2020
New Date: 01/05/2020
Between: 2

Example: 05:
Old Date: 19/03/2020
New Date: 01/05/2021
Between: 14

【问题讨论】:

标签: javascript node.js momentjs


【解决方案1】:

您可以使用 momentjs .startOf('month') 日期修饰符丢弃天数,然后使用 .diff() 比较天数:

const getDate = (date) => moment(date, 'DD/MM/YYYY').startOf('month')
const diff = Math.abs(getDate('19/03/2020').diff(getDate('01/05/2021'), 'months'));

console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

【讨论】:

  • 瞬间发生错误:const diff = Math.abs(moment(firstDate).startOf('month').diff(moment(secondDate).startOf('month'),'months') ) 弃用警告:提供的值不是可识别的 RFC2822 或 ISO 格式。 moment 构造回退到 js Date(),这在所有浏览器和版本中并不可靠。不鼓励使用非 RFC2822/ISO 日期格式,并将在即将发布的主要版本中删除。
  • @rbrt 确保在解析带有时刻的日期时指定日期格式,例如:moment('19/03/2020', 'DD/MM/YYYY')
  • 如果我指定它,它会给我一个不正确的值。第一次:2020/03/12 第二次:2021/12/01,结果:219
  • 我用这种格式管理:moment(firstExpiration, 'YYYY-MM-DD')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 2022-11-16
相关资源
最近更新 更多