javascript - 如何以天为单位获取 JS 中的日期差异(不考虑小时差异)
问题描述
对不起,如果问题是重复的,但我在这里找不到任何关于我的案例的内容。我有一个函数getDaysDiff
,我在其中传递了两个(startDate, endDate)
日期字符串参数,并期望在几天内获得两个日期之间的差异,但有一些细节。像这样:
- 如果我通过
'2021-07-19T23:59:59'
并且'2021-07-20T00:00:01'
我想获得1 天作为返回值,因为日期不同,即使小时数小于 24 - 对于两个日期接近但小时数超过 24 小时的情况也是如此,例如
'2021-07-19T00:00:01'
and'2021-07-20T23:59:59'
,在这种情况下,我仍然想获得1 天 - 最后,它应该适用于不同月份的相邻日期,例如
'2021-07-30T23:59:59'
并且'2021-08-01T00:00:01'
应该返回1 天。
我尝试应用以下功能,但由于Math.round/floor/ceil
它在上述一种情况下无论如何都会中断。
function getDaysDiff(start, end) {
const date1 = new Date(start);
const date2 = new Date(end);
const oneDay = 1000 * 60 * 60 * 24;
const diffInTime = date2.getTime() - date1.getTime();
const diffInDays = Math.ceil(diffInTime / oneDay);
return diffInDays;
}
console.log(getDaysDiff('2021-07-19T23:59:59', '2021-07-20T00:00:01'));
console.log(getDaysDiff('2021-07-19T00:00:01', '2021-07-20T23:59:59'));
console.log(getDaysDiff('2021-07-31T23:59:59', '2021-08-01T00:00:01'));
有没有一种简便的方法来获得这种差异?
解决方案
推荐阅读
- html - 如何在下一行对齐两个相同高度的div和第三个div
- java - 为什么我的数组列表不打印它的价值?
- c# - 如何将实例化对象与其原始对象匹配
- java - Hashmap 通过其他 hashmap 键返回值
- c++ - 不使用c++11实现函数对象绑定
- corda - Corda 节点关闭以及 Spring Boot 客户端
- angular - ngx-datatable 列切换显示/隐藏问题
- heroku - 用户名和密码在一段时间后不被接受
- scala - 如何在项目中使用 spark 的子模块(比如 spark_core)?
- javascript - 为什么使用 Semantic UI 的搜索组件做出反应的合成事件上没有 `keyCode` 值?