2017-08-12 16 views
1

私は以下の日数を持っています。私は今日の価値を知りたい。たとえば、今日が金曜日の場合は、「11:30 AM - 9:30 PM」になるはずです。 JavaScriptでこれをどのようにすることができますか? 、14:30 - 14:30または11:30の間に15時02分01秒PM -今日の日の値を

["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] 

はまた、私がチェックすることができますどのように15時02分01秒午後のような時間は、時間の間11:30 AMに存在する場合5:30〜10:30?

+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分、午後11時30分〜午後2時30分、午後5時30分〜10時30分の間に15:02:01 pmが存在するかどうかを確認する方法PM? – shanky

+0

@shanky:文字列の数字を解析する必要があります。たとえば、正規表現を使用します。入力はどこで取得していますか?同じ情報がもっと便利な形式で利用できるのでしょうか? – Ryan

+0

(22:57:58)のような入力ボックスから時刻を入力していて、時刻の値を分割しています。checkVals = checkVal.replace(/ \ s/g、 '').split( ' - ') ;次に、checkVals [0]とcheckVals [1]の間にinput =(22:57:58)が存在するかどうかをチェックしようとしています。しかし、まだ私はこれを行う方法がわからないのですか? – 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>

関連する問題