只想比较 TIME 值 MomentJS

2023-12-11

在浏览了一些其他 MomentJS 问题和答案之后,我仍然对如何使用 moment 进行简单比较感到困惑两个不同的时间.

我不需要(想要)考虑日期/日期。

我的用例是这样的: 我正在从配置文件中读取时间表(开始/结束时间)。这是使用 Node.js 完成的

开始时间 = 下午 6:30
结束时间 = 凌晨 3:30

var currentTime= moment();    // e.g. 11:00 pm
var starttime = moment('06:30 pm', "HH:mm a");
var endtime = moment('03:30 am', "HH:mm a");

amIBetween = currtime.isBetween(starttime , endtime);
console.log(amIBetween);   //  returns false

从技术上讲,我的场景持续了两天,我明白为什么它是错误的。

我需要(期望)时刻返回 TRUE - 即当前时间在开始时间和结束时间之间并且落在该范围内。

我是否需要检查上午 12 点之后的时间,然后添加一天以使检查生效? 完成此任务的任何其他建议。我查看了具有“包含”功能的时刻范围,但也有类似的问题。

我发现很难相信它是如此复杂,但也许它是:\

--

以下是跨天出现的问题的进一步澄清,即使试图更明确:

var currentTime= moment('11:00p', "HH:mm a");
var startTime = moment('06:00p', "HH:mm a");
var endTime = moment('03:30a', "HH:mm a");

currentTime.toString(); //"Fri Oct 28 2016 23:00:00 GMT-0400"
startTime.toString();   // "Fri Oct 28 2016 18:00:00 GMT-0400"
endTime.toString();    // "Fri Oct 28 2016 03:30:00 GMT-0400"

currentTime.isBetween(startTime, endTime);  // false
currentTime.isAfter(endTime) && currentTime.isBefore(startTime); //false
currentTime.isAfter(startTime) && currentTime.isBefore(endTime); //false

似乎很明显他们是假的,因为day/date是按时刻考虑的。这就是我想要解决的问题。

以下内容将起作用:

endTime.add(1, "days");
currentTime.isBetween(startTime, endTime);  // TRUE

然而,这意味着我需要检查 START TIME 是否在上午 12 点之前 && ENDTIME 是否在 12 点之后,然后在 ENDTIME 上添加 1 天。克鲁奇?


经过我自己的测试并查看其他人的建议后,似乎忽略日期/日期并尝试跨越几天是一个问题。我想出了这个,现在正在我的应用程序中运行。

isTimeBetween = function(aStartTime, anEndTime, aCurrTime)
{
    // you may pass in aCurrTime or use the *actual* current time
    var currentTime = !aCurrTime ? moment() : moment(aCurrTime, "HH:mm a");
    var startTime = moment(aStartTime, "HH:mm a");
    var endTime = moment(anEndTime, "HH:mm a");

    if (startTime.hour() >=12 && endTime.hour() <=12 )
    {
        endTime.add(1, "days");       // handle spanning days
    }

    var isBetween = currentTime.isBetween(startTime, endTime);

    /***  testing   
    startTimeString = startTime.toString();
    endTimeString = endTime.toString();
    currentTimeString = currentTime.toString();

    console.log(startTimeString);
    console.log(endTimeString);
    console.log(currentTimeString);
    console.log('\nis '+ currentTimeString  + ' between ' + 
              startTimeString + ' and ' + endTimeString + ' : ' 
              + isBetween);
    ****/
    return isBetween;
    }

isTimeBetween("06:30pm", "03:30am", "11:00pm");     //true      !! this is main use case
isTimeBetween("06:30pm", "10:30pm", "11:00pm");     //false
isTimeBetween("04:00am", "06:00am");                //true (e.g. current time is 5am
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

只想比较 TIME 值 MomentJS 的相关文章

随机推荐

  • Jquery.height() 使用 F5 或 CTRL+F5 返回不同的结果

    所以我试图找到图像的高度 然后添加上边距 这使我能够强加一个垂直中心 我正在运行这段代码 并在F5刷新我得到了正确的高度 但是CTRL F5 刷新它给了我一个小得多的高度 我有点认为这是一个加载 延迟的事情 但我正在使用准备好的文档 所以不
  • 是否可以从 Spotify 访问流数据?

    我正在寻求构建一个应用程序 可以从 Spotify 流式传输音乐并操纵歌曲的节奏和音高 是否可以从 Spotify iOS SDK 或任何其他资源访问原始音频缓冲区 不可以 原始音频无法通过任何 Spotify API SDK 访问 PS
  • 创建Android Activity类的对象

    我有一个扩展的类Activity我试图在普通的 java 类中创建该类的对象 但它抛出了一个异常 Can t create handler inside thread that has not called looper prepare 我
  • 尝试读取或写入受保护的内存

    我开始看到我的应用程序中的几个不同位置抛出了 AccessViolationException 它从未发生在我的开发电脑 我们的测试服务器上 它也只出现在我们 2 台生产服务器中的 1 台上 因为它似乎只发生在我们的一台生产服务器上 所以我
  • 如何检测UDP数据包是否丢失? (C#)

    我正在开发 SNTP 客户端 它通过 UDP 从 NTP 服务器获取时间戳 一切正常 我可以下载时间戳并更新 Windows 时钟 但如果 UDP 数据包丢失 我想收到一条消息 如何检测数据包何时丢失 我需要这些信息 因为如果数据丢失我想获
  • 使用 awk 忽略 CSV 文件字段中的逗号

    我试图从 CSV 文件最后一行的第二个字段中获取一个数字 到目前为止 我有这个 awk F END print 2 file path fileName csv 除非最后一行中的第一个字段中有逗号 否则这是有效的 所以对于看起来像这样的行
  • 修改无窗口 QLabel 的 Alpha 通道透明度

    我有一个非常小的 Qt 应用程序 它使用标签来显示 jpeg 图像 而无需先将其放入窗口中 我得到了很多帮助使用 QtGui 显示 QImage 现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明 我尝试过以下操作 但没有任何运
  • 在 Spring 测试中忽略 MongoDB 套接字连接

    我在 spring 项目中使用 mongo 但无法连接到 mongo 服务器 任何人都知道在执行测试时忽略这个 bean 的方法 因为有时我没有 mongo 服务器 并且我不希望此构建失败 我真的很想知道我是否可以使用 SpringRunn
  • NHibernate级联保存

    这是试图将 null 插入 Comment BlogArticleID 出现以下 GenericADOException 无法插入 NHibernate OneToMany BO Comment SQL INSERT INTO Commen
  • C++ 将对象向量中的元素复制到包含该元素的向量中

    我想复制a值来自foos将向量转换为另一个向量 只需int价值 最快的方法是什么 include
  • “内联”关键字和“内联”优化是不同的概念吗?

    我问这个基本问题是为了澄清事实 已提及这个问题 and 目前接受的答案 这没有说服力 但是 那得票数第二高的答案提供了更好的洞察力 但也不完美 在阅读下面的内容时 尝试区分inline keyword和 内联 concept 这是我的看法
  • Bootstrap 4 导航栏未显示[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Bootstrap 4 创建导航栏 这是我的 package json 文件的内容 name NAME here version 1 0 0 description Descripttion ge
  • 为 iPad 和 iPhone 设置输入按钮的样式

    我使用 CSS 来设置网站上输入按钮的样式 但在 IOS 设备上 样式被 Mac 的默认按钮所取代 有没有一种方法可以为 iOS 设计按钮样式 或者可以制作一个行为类似于提交按钮的超链接 您可能正在寻找 webkit appearance
  • Java EE 6 编程安全性、glassfish 和 JDBC 领域

    我正在探索基于 glassfish 服务器的 jdbc 领域的纯 Java EE 方法来实现编程安全性 特别是登录用户 基本上 在我的登录 servlet 中我正在做 String username request getParameter
  • Laravel 4:如何运行原始 SQL?

    我想重命名 Laravel 4 中的表 但不知道该怎么做 SQL 是alter table photos rename to images 如果有 Eloquent 解决方案 我还想知道如何运行原始 SQL 因为有时别无选择 In the
  • R:如何让我的包使用另一个包?

    这是一个非常简单的问题 我正在延长某人的包裹 它当前使用包 A B 它们列在说明文件中 如果我需要包 C 中的函数 将包添加到依赖项 我是否只需在描述文件中添加包就足够了 进入哪个部分 依赖或导入 还需要采取更多其他步骤吗 一旦我的代码需要
  • Google Apps 脚本中的格式化日期

    我试图在提交表单时获取包含简单格式化日期的电子表格 但所有日期 包括时间戳 都被发布为 1969 年 12 月 31 日下午 2 00 我做错了什么 任何帮助将不胜感激 function formSubmitReply e var shee
  • 有没有一个工具可以将swf反编译为actionscript? [复制]

    这个问题在这里已经有答案了 可能的重复 如何反编译 swf 文件 有人知道有这样的工具吗 硕思的反编译器是一个很好的起点
  • 从 pojo 生成 JsonSchema:如何自动添加“描述”?

    我正在尝试从项目中的 pojos 自动生成 JsonSchema 代码如下所示 ObjectMapper mapper new ObjectMapper SchemaFactoryWrapper visitor new SchemaFact
  • 只想比较 TIME 值 MomentJS

    在浏览了一些其他 MomentJS 问题和答案之后 我仍然对如何使用 moment 进行简单比较感到困惑两个不同的时间 我不需要 想要 考虑日期 日期 我的用例是这样的 我正在从配置文件中读取时间表 开始 结束时间 这是使用 Node js