只想比较时间值MomentJS

本教程将介绍只想比较时间值MomentJS的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

只想比较时间值MomentJS 教程 第1张

问题描述

看完其他一些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

从技术上讲,我的方案跨越两天,我理解为什么它是错误的。

我需要(期望)Moment返回TRUE-即currtime介于开始时间和结束时间之间,并且落在该范围内。

我是否需要在凌晨12点之后检查一段时间,然后添加一天以使检查生效?
实现这一目标的任何其他建议。我看了一下Moment-Range,它有"包含"功能,但也有类似的问题。

我很难相信它就是这么复杂,但也许是这样的:

--

这里进一步澄清的是,即使在尝试更明确的情况下,跨天数也会出现问题:

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

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

以下内容将起作用:

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

但是,这意味着我需要检查开始时间是否在12am之前&&结束时间在12am之后,然后将结束时间增加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('
is '+ 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

好了关于只想比较时间值MomentJS的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。