2017-08-12 39 views
1

我有以下列表中的天數。我想獲得今天的價值。例如,如果今天是星期五,那麼我應該得到「11:30 AM - 9:30 PM」。我如何在JavaScript中做到這一點?從數組中獲取今日值

["Monday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Tuesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
"Wednesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Thursday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
"Friday: 11:30 AM – 9:30 PM", "Saturday: 11:30 AM – 9:30 PM", 
"Sunday: 11:30 AM – 9:00 PM"] 

let a = currentTime.split(':'); 
if(a[2]>1){ 
    a[1]=parseInt(a[1])+1 
} 
let hours = a[0] 
let minutes = a[1] 

另外,我怎麼能檢查時間之間存在11:30像15時02分01秒下午時間 - 下午2:30或11:30之間下午15時02分01秒 - 2:30 PM, 5:30 - 10:30 PM?

+0

忘記了一分鐘的語言方式。你在那裏有一個特定格式的字符串列表。考慮如何解析具有特定值的固定格式的字符串列表。在獲得算法後,您可以考慮如何在JavaScript中實現它。 – keno

回答

3

獲取從0當前工作日(星期日)至6日(週六):

const today = new Date().getDay(); 

調整它的陣列,其中0爲符合星期一:

const today = (new Date().getDay() + 6) % 7; 

刪除的名稱從相應的條目天:

const values = ["Monday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", …]; 
const value = values[today].split(': ')[1]; 

這可能有助於在這一點來包裝你輸入的時間解析成一個functi在返回分鐘的自0:00數:

const parseInputTime = time => { 
    const [hours, minutes] = time.split(':').map(Number); 

    return 60 * hours + minutes; 
}; 

範圍解析給定的時間是相似的:

const parseRangeTime = time => { 
    const parts = time.split(/[: ]/); 
    const hours = parseInt(parts[0], 10) + (parts[2] === 'PM' ? 12 : 0); 
    const minutes = parseInt(parts[1], 10); 

    return 60 * hours + minutes; 
}; 

然後你就可以使用這些功能,並比較結果:

const [start, end] = value.split(' – '); 
const isInRange = 
    parseInputTime(currentTime) >= parseRangeTime(start) && 
    parseInputTime(currentTime) < parseRangeTime(end); 

full demo

+0

另外,如何檢查上午11:30 - 下午2:30或下午15:02:01之間是否在上午11:30至下午2:30,下午5:30至10:30之間存在15:02:01 pm下午? – shanky

+0

@shanky:例如,你將不得不從字符串中解析數字 - 用正則表達式。你在哪裏得到輸入?是否可以使用更方便的格式提供相同的信息? – Ryan

+0

我發現了時間輸入來自輸入框等(22時57分58秒),我分裂時間值常量checkVals = checkVal.replace(/ \ S/G,「」).split(「 - 」) ;。然後我試圖檢查輸入=(22:57:58)是否存在於checkVals [0]和checkVals [1]之間。但我仍然不確定如何做到這一點? – shanky

1

這也適用。

const days = ["Monday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Tuesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
 
"Wednesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Thursday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
 
"Friday: 11:30 AM – 9:30 PM", "Saturday: 11:30 AM – 9:30 PM", 
 
"Sunday: 11:30 AM – 9:00 PM"] 
 

 
let today = new Date().toLocaleString('en-us', { weekday: 'long' }) 
 

 
let todaysTime = ''; 
 

 
for (let i=0; i < days.length; i++) { 
 
    if (days[i].indexOf(today) !== -1) { 
 
    todaysTime = days[i].substr(today.length + 2) 
 
    } 
 
} 
 

 
console.log(todaysTime);

0

試試這個

var x = ["Monday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Tuesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
"Wednesday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", "Thursday: 11:30 AM – 2:30 PM, 5:30 – 10:30 PM", 
"Friday: 11:30 AM – 9:30 PM", "Saturday: 11:30 AM – 9:30 PM", 
"Sunday: 11:30 AM – 9:00 PM"]; 

for(var i =0;i< x.length;i++){console.log(x[i].substring(0,x[i].indexOf(':')));} 
0

請試試這個。我改變了數據存儲

var array = \t [ 
 
      {name: "Monday", value :"11:30 AM – 2:30 PM, 5:30 – 10:30 PM"}, 
 
      {name: "Tuesday", value :"11:30 AM – 2:30 PM, 5:30 – 10:30 PM"}, 
 
      {name: "Wednesday", value :"11:30 AM – 2:30 PM, 5:30 – 10:30 PM"}, 
 
      {name: "Thursday", value :"11:30 AM – 2:30 PM, 5:30 – 10:30 PM"}, 
 
      {name: "Friday ", value : "11:30 AM – 9:30 PM"}, 
 
      {name: "Saturday", value : "11:30 AM – 9:30 PM"}, 
 
      {name: "Sunday ", value : "11:30 AM – 9:00 PM"} 
 
      ]; \t \t 
 
      \t 
 
      function myFunction() { 
 
      \t var obj = array.filter(function (obj) { 
 
      \t \t return obj.name === 'Wednesday'; 
 
      \t })[0]; 
 
     
 
      \t window.alert(obj.value); 
 
      }
<!DOCTYPE html> 
 
<html> 
 
    <body> 
 
     <button onclick="myFunction()">Click me</button> 
 
    </body> 
 
</html>