2014-10-08 50 views
0

我有餐廳業務startTimeendTime今天日期。如果startTime小於當前時間,在這種情況下如何計算正確的時間?

我有一個要求,因爲這樣對現在訂購,這取決於餐館startTimeendTime按鈕按下時,我需要顯示一個警告meesage 說服務將在明年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); 
} 

如果開始時間比當前時間更大然後它的工作完美(顯示correclty)

但是,如果開始時間比當前時間較少那麼它的顯示值在負值

有誰請讓我知道如何在幾分鐘內顯示correclty櫃面STARTTIME較小?

這是我的jsfiddle

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

非常感謝你。

+0

你確定你不知道如何對值進行比較,以瞭解哪些一個是最大的? – melancia 2014-10-08 12:12:54

+1

你怎麼知道餐廳在哪個時區?或者用戶? – RobG 2014-10-08 12:15:13

回答

0

嘗試修改getMinutesBetweenDate函數來得到這樣的區別:

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

謝謝,但假設startTime是04:00 PM,endTime ='5:30 PM';那麼我得到的警報是107,這是錯誤的知道。 – Pawan 2014-10-08 12:20:02

+0

不好意思誤解了問題,問題是當前時間是在'endTime' – Anduril 2014-10-08 12:26:15

1

用戶當店是closed驗證碼:

從當前日期
startDate.setDate(startDate.getDate()+1); 

你被計算的開始和結束日期對象。

因此,如果商店在當天關閉,請在開始日期再添加一天。

Fiddle

+0

完美解決方案之後,非常感謝您先生。 – Pawan 2014-10-08 12:23:29

+0

您也可以在計算差異時使用模數來忽略此問題。 – 2014-10-08 12:30:12

1

簡單的解決方案:

如果你的價值是負的,加了一整天:

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