मुझे यह जांचने की ज़रूरत है कि कोई समय प्रारंभ और समाप्ति समय के बीच है या नहीं। सभी समय एक ही दिन हैं, इसलिए तिथि महत्वपूर्ण नहीं है। मैं घंटों की तुलना करने में सक्षम हूं, लेकिन मैं अनिश्चित हूं कि प्रारंभ और समाप्ति समय में मिनटों को कैसे जोड़ा जाए।

var thedate = new Date(); 
var dayofweek = thedate.getUTCDay(); 
var hourofday = thedate.getUTCHours(); 
var minutesofday = date.getMinutes();
function inTime() { if (dayofweek != 0 && dayofweek != 7 && (hourofday > 13 && hourofday < 20)) { return true; } return false; } 

अगर मैं जांचना चाहता हूं कि क्या समय 13:05 और 19:57 के बीच है, तो मैं अपने इनटाइम फ़ंक्शन में मिनटों को कैसे जोड़ूं? अगर मैं उन्हें अगर कथन में जोड़ता हूं, तो यह काम करने में विफल रहता है:

 function inTime() { if (dayofweek != 0 && dayofweek != 7 && ((hourofday > 13 && minutesofday > 5) && (hourofday < 20 && minutesofday < 57))) { return true; } return false; } 
3
Alligator 4 अप्रैल 2018, 18:46

2 जवाब

सबसे बढ़िया उत्तर

यदि इसकी 14:04 आपकी स्थिति विफल हो जाएगी क्योंकि 4 छोटा है 5। सबसे आसान शायद दिन के पूरे मिनट लेना होगा:

 const start = 13 * 60 + 5;
 const end =  19 * 60 + 57;
 const date = new Date(); 
 const now = date.getHours() * 60 + date.getMinutes();

 if(start <= now && now <= end)
   alert("in time");
10
Jonas Wilms 4 अप्रैल 2018, 15:59

यदि आप कह रहे हैं कि आप जांचना चाहते हैं कि क्या "अभी" समय दो गुना के बीच है, तो आप उस समय को मिनट-से-मिडनाइट (hours * 60 + minutes) के रूप में व्यक्त कर सकते हैं, और चेक काफी सीधा है।

उदाहरण के लिए, क्या यह सुबह 8:30 बजे (समावेशी) और शाम 5:00 बजे के बीच है। (अनन्य):

var start =  8 * 60 + 30;
var end   = 17 * 60 + 0;

function inTime() {
  var now = new Date();
  var time = now.getHours() * 60 + now.getMinutes();
  return time >= start && time < end;
}

console.log(inTime());

उपरोक्त स्थानीय समय का उपयोग करता है; यदि आप इसके बजाय UTC की जाँच करना चाहते हैं, तो बस समान UTC विधियों का उपयोग करें।

1
T.J. Crowder 4 अप्रैल 2018, 16:08