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

2023-12-03

我正在编写一个设备租赁应用程序,其中根据租赁期限(以天为单位)向客户收取租赁设备的费用。所以,基本上,(每日费用 * 天数)= 总费用。

为了获得客户端的即时反馈,我尝试使用 Javascript 来找出两个日历日期的差异。我四处寻找,但没有发现任何东西是我正在寻找的。我见过的大多数解决方案都是以下形式:

function dateDiff1(startDate, endDate) {
    return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}

我的问题是,在这两个日期期间,可以在一天中的任何时间检查和归还设备,无需额外付费。上面的代码计算两个日期之间的 24 小时周期数,而我真正对日历天数感兴趣。

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

我找到的最接近的解决方案是这个函数:

function dateDiff2(startDate, endDate) {
    return endDate.getDate() - startDate.getDate();
}

只要两个日期在同一个月内,这正是我想要的。但是,由于 getDate() 只返回月份中的日期(即 1-31),因此当日期跨越多个月时(例如 7 月 31 日到 8 月 1 日是 1 天,但上面计算的是 1 - 31,或者-29)。

在后端,在 PHP 中,我使用 gregoriantojd(),它似乎工作得很好(请参阅这个帖子举个例子)。我只是在 Javascript 中找不到等效的解决方案。

有人有主意吗?


如果您想要一整天的学生相机租赁示例......

function daysBetween(first, second) {

    // Copy date parts of the timestamps, discarding the time parts.
    var one = new Date(first.getFullYear(), first.getMonth(), first.getDate());
    var two = new Date(second.getFullYear(), second.getMonth(), second.getDate());

    // Do the math.
    var millisecondsPerDay = 1000 * 60 * 60 * 24;
    var millisBetween = two.getTime() - one.getTime();
    var days = millisBetween / millisecondsPerDay;

    // Round down.
    return Math.floor(days);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 中的日期差异(忽略一天中的时间) 的相关文章

随机推荐

  • 在 VS2013 中使用 VS2008 (v90) C++ 工具集?

    微软文档解释如何在 VS2013 中使用 2010 或 2012 工具集 有谁知道 2008 工具集是否也有向后支持 我正在从 2008 年升级到 2013 年的几个项目 但我的团队领导希望我们最初升级项目文件 但仍以与 2008 年相同的
  • Git svn 变基失败

    I use git svn跟踪 SVN 存储库 当我尝试做一个git svn rebase我收到此错误 Incomplete data Delta source ended unexpectedly 这是一个大型仓库 具有悠久的历史 仅仅获
  • MVC4 Windows 身份验证重定向到帐户/登录

    我正在设置Windows 身份验证在 MVC 4 应用程序中使用视觉工作室2013并使用IIS Express 开发服务器 但是 我被重定向到 Account Login 就好像我正在使用表单身份验证一样 我的 bin 文件夹 或任何地方
  • 在 RECEIVE_BOOT_COMPLETED 上通过广播接收器访问数据库

    当手机完成启动后 我想根据数据库中的小时 分钟 信息自动重新注册一些警报 我尝试使用广播接收器来执行此操作 但它不起作用 当尝试在启动时访问数据库 DB 帮助程序类时 它会崩溃 通过应用程序访问数据库帮助程序类时 它工作正常 这是可能的还是
  • boost::spirit::karma 输出引号内的字符串

    我正在尝试使用 boost spirit karma 转义引号中的字符串 如果它只是一个字符串 则效果很好 但是 对于 std vector 中 boost variant 中的字符串 则不然 只是打印字符串确实有效 但是我不太明白为什么
  • 字符串有隐藏字符,无法验证,

    大约2小时前我问了一个问题 不需要看问题 只是一个参考 使用node js存储图像出现错误 给出的解决方案实际上与我的代码相同 我试图找到我的代码和他的代码之间的差异 看看他做了什么修改才能使其工作 但没有任何修改 所以我想到尝试一下在线I
  • 既然“invoke”已被软弃用,那么替代方案是什么?

    rlang invoke 现已软弃用 purrr invoke 退休了 如今 以编程方式调用带有参数列表的函数的简洁方法是什么 tldr Use exec代替invoke use map2 plus exec代替invoke map 示例i
  • UIImagePickerController 如何隐藏翻转相机按钮?

    有没有办法隐藏 UIImagePickerController 内的翻转相机按钮 谢谢阅读 我最终使用 UIImagePickerController 的自定义子类来解决此 和其他 问题 import SMImagePickerContro
  • 将包含十六进制值的字节数组转换为十进制值

    我正在 c 中进行应用程序 这里我想将包含十六进制值的字节数组转换为十进制值 假设我有一个字节数组为 array 0 0X4E array 1 0X5E array 2 0X75 array 3 0X49 在这里 我想将该十六进制数组转换为
  • random_state在train_test_split和分类器中的作用

    基于这个答案 Scikit learn 中的随机状态 伪随机数 如果我使用相同的整数 比如 42 random state 然后每次进行训练 测试分割时 它应该给出相同的分割 即每次运行期间训练中的数据实例相同 测试时的数据实例相同 But
  • XSLT根据父子元素的值删除子元素

    我正在尝试使用这里使用的一些相同的逻辑https stackoverflow com a 10629806 662877 到不同的 XML 但没有得到预期的输出 如果 TERR KHM6 则删除 剥离这两个元素创建付款项目 and 创建支付
  • 一java内存刷新易失性:一个好的程序设计?

    这是与此相关的问题 java 在一个变量上使用 易失性 VS 每个变量 我有一个或多个不同的对象 我想改变其中的某些状态 然后我想让该状态对其他线程可见 出于性能原因 我不想使该对象中的每个成员变量都是易失性的 有时我想在单线程应用程序中使
  • Spring REST 服务:从请求中检索 JSON

    我正在 Spring 3 1 上构建 REST 服务 我正在使用 EnableWebMVC 注释 由于我的服务仅接受 JSON 请求 因此我还想将传入请求转储到 MongoDB 集合中以进行日志记录 以及稍后的数据转换 我想访问原始 JSO
  • 将 Cassandra OrderedMapSerializedKey 转换为 Python 字典

    我在 Cassandra 中有一列由列表映射组成 当使用 Python 驱动程序查询时 它返回一个 OrderedMapSerializedKey 结构 该结构是列表的映射 我想将整个查询放入 pandas 中 要从 OrderedMapS
  • 是在webview已经获取文件之后调用setDownloadListener onDownloadStart吗?

    WebView 是否会执行 Http Get 并下载完整文件 然后调用我的 onDownloadStart 方法 并且我的代码再次下载文件 在 Android 应用程序中使用的 WebView 中 我们需要处理 PDF 文件的下载 我看到的
  • 无法使用特殊主体“sa”

    当我尝试运行命令时 EXEC master sp addsrvrolemember loginame N sa rolename N serveradmin GO 我收到错误 消息 15405 级别 11 状态 1 过程 sp addsrv
  • 更改 WPF 中的按钮内容

    I have private void button1 MouseEnter object sender EventArgs e for int i 0 i gt 2 i button1 Content Convert ToString i
  • 如何在ngrx效果中进行http轮询

    我有这种效果 我尝试使用计时器每 x 秒轮询一次数据 但我无法弄清楚计时器应该如何与数据流交互 我尝试在顶部添加另一个 switchMap 但随后我无法将操作和有效负载传递给第二个 switchmap 有任何想法吗 我在看这个帖子但我的情况
  • Spring MVC 3 中的 MarshallingView

    当我使用 MarshallingView 封送我的 FileManagement 对象列表 java util List 时 出现此错误 如果我只向模型添加一个对象 则不会发生这种情况 所以它使用的是对象 而不是集合 List 例外 jav
  • Javascript 中的日期差异(忽略一天中的时间)

    我正在编写一个设备租赁应用程序 其中根据租赁期限 以天为单位 向客户收取租赁设备的费用 所以 基本上 每日费用 天数 总费用 为了获得客户端的即时反馈 我尝试使用 Javascript 来找出两个日历日期的差异 我四处寻找 但没有发现任何东