包括JS中第一天和最后一天的两个日期之间的差异

时间:2020-03-13 15:20:37

标签: node.js momentjs

我有两个日期,第一个是日期开始,第二个是日期结束。

我必须用年,月和天的数量来翻译。

示例:

    const start = moment(new Date('2021-03-03'))
    const end = moment(new Date('2022-03-03'))
    const difference = moment.duration(end.diff(start))
    const days = difference.days() //30
    const months = difference.months() // 11
    const years = difference.years() // 0

结果是:

{"days":30,"months":11,"years":0}

但是我的预期行为是:

{"days":0,"months":0,"years":1}

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

要实现预期的行为,只需更改代码:

从这里:

const end = moment(new Date('2022-03-03'))

对此:

const end = moment(new Date('2022-03-03')).add('1', 'days')

这将给出:{"days":0,"months":0,"years":1}

最终完整更新的代码:

const start = moment(new Date('2021-03-03'))
const end = moment(new Date('2022-03-03')).add('1', 'days')
const difference = moment.duration(end.diff(start))
const days = difference.days() // 0
const months = difference.months() // 0
const years = difference.years() // 1

答案 1 :(得分:1)

我认为这是因为在03/03,它将始终保持至少一毫秒来完成一年。

例如,我尝试使用.startOf('d').endOf('d'),结果如下:

const start = moment(new Date('2021-03-03')).startOf('d')
const end = moment(new Date('2022-03-03')).endOf('d')
moment("2021-03-03T00:00:00.000")     
moment("2022-03-03T23:59:59.999")

亚历克斯。