首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript中的日期差异(忽略一天中的时间)

Javascript中的日期差异(忽略一天中的时间)
EN

Stack Overflow用户
提问于 2018-03-20 08:21:07
回答 2查看 0关注 0票数 0

我正在写设备租赁申请,根据租赁期限(以天计),向客户收取设备租赁费用。所以,基本上(每日费用*天数)=总费用。

对于客户端的即时反馈,我试图用Javascript来计算两个日历日期的差异。我搜索了四周,但没有找到我正在寻找的东西。我见过的大多数解决方案都是这样形成的:

代码语言:javascript
复制
function dateDiff1(startDate, endDate) {
    return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}

我的问题是,设备可以在这两个日期的任何时间检查出来并在任何时间返回,而且不收取额外费用。上面的代码是计算两个日期之间的24小时时间段的数量,当时我对日历天数很感兴趣。

例如,如果有人在7月6日上午6点检查了设备,并在7月7日晚上10点将其返回,上述代码会计算出超过一个24小时的时间已过,并且会返回2.期望的结果是1,因为只有一个日历日期已过(即第6日至第7日)。

我找到的最接近的解决方案是这个功能:

代码语言:javascript
复制
function dateDiff2(startDate, endDate) {
    return endDate.getDate() - startDate.getDate();
}

只要这两个日期在同一个月内,它就完全符合我的要求。但是,由于getDate()仅返回月中的某一天(即1-31),因此当日期跨越多个月时(例如7月31日至8月1日为1天,但上述计算1 - 31或-29)。

在后端,在PHP中,我使用了gregoriantojd(),这似乎工作得很好(请参阅本文中的示例)。我无法在Javascript中找到等效的解决方案。

有人有主意吗?

EN

Stack Overflow用户

发布于 2018-03-20 17:27:36

我刚刚遇到了这个问题,在找到这个问题后解决了问题,所以我回来发布这个问题。无论时间如何,这将获得总天数。DST不会搞砸了:

代码语言:javascript
复制
date1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());
date2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());
var ms = Math.abs(date1-date2);
return Math.floor(ms/1000/60/60/24); //floor should be unnecessary, but just in case

转换为UTC日期,甚至不知道原始日期的时间。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档