我有两个日期,第一个是日期开始,第二个是日期结束。
我必须用年,月和天的数量来翻译。
示例:
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}
我怎么能做到这一点?
答案 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")
亚历克斯。