如果startTime小于currenttime,在这种情况下如何计算正确的时间

If startTime is lesser than currenttime how to calculate proper time in this case?

本文关键字:计算 时间 何计算 currenttime 小于 startTime 这种情况下 如果      更新时间:2023-09-26

我有餐厅业务startTimeendTime今天的日期。

我有一个要求,当点击立即订购按钮时,取决于餐厅startTimeendTime,我需要显示警报会议表示服务将在下一XX分钟内恢复

这是我的代码

var startTime = '04:00 PM';
var endTime  = '5:30 PM';

var now  = new Date();
var startDate = dateObj(startTime);
var endDate  = dateObj(endTime);
 var openorclosed = now < endDate && now > startDate ? 'open' : 'closed';
if(openorclosed=='open')
{
   alert('Restaurant is Open');
    // do nothing
}
else if(openorclosed=='closed')
{
    var diffinMinutes = getMinutesBetweenDates(startDate,now);
    var minutes = Math.floor(diffinMinutes);
    alert('service not available for the next '+minutes+' min');
}

function dateObj(d) {
    var parts = d.split(/:|'s/),
    date = new Date();
    if (parts.pop().toLowerCase() == 'pm') parts[0] = (+parts[0]) + 12;
    date.setHours(+parts.shift());
    date.setMinutes(+parts.shift());
    return date;
}
function getMinutesBetweenDates(startDate, now) {
    var diff = startDate.getTime() - now.getTime();
    return (diff / 60000);
}

如果startTime大于当前时间,则其工作正常(显示正确)

但是,如果startTime小于Current time,则其显示值为负值

有人能告诉我如何在几分钟内显示正确的开始时间吗??

这是我的jsfiddle

http://jsfiddle.net/wajzvqqx/1/

非常感谢。

简单的解决方案:

如果你的值是负数,加一整天:

var diffinMinutes = getMinutesBetweenDates(startDate,now);
if (diffinMinutes < 0) diffinMinutes = diffinMinutes + 1440;
var minutes = Math.floor(diffinMinutes);

当商店为closed:时使用此代码

startDate.setDate(startDate.getDate()+1);

您正在从当前日期计算开始日期和结束日期对象。

所以,如果商店当天关闭,那么在开始日期后再增加一天。

Fiddle

尝试修改getMinutesBetweenDate函数以获得如下差异:

function getMinutesBetweenDates(startDate, now) {
    var diff;
    if (startDate > now) {
        diff = startDate.getTime() - now.getTime();
    } else {
        diff = now.getTime() - startDate.getTime();
    }
    return (diff / 60000);
}