2016-02-28 104 views
0

我想提示用户输入一段时间,例如早上6点到上午9点之间,然后是5点到8点之间。我得到适当的提示,但我不知道如何区分它与上午或下午?用户输入的时间

var time=prompt("What time is it? ",""); 
if(time >=6 && time <=9) 
+0

使用'24'小时时钟 – giannisf

+0

你可以要求用户首先提供上午时间,然后下午时间。或者你可以要求他们提供“am”和“pm”作为输入的一部分。 –

+0

您的文字应该提及'AM/PM' .. – Rayon

回答

0

区分AM和PM的一种方法是使用24小时制。

24小时制PM值大于12。例如18

然后,您可以从该值if>12减去12以获得非24小时版本。例如:18 - 12是下午6时

+0

从上午和下午有什么不同?所以上午11点到下午2点? –

0

解决方案1:

你可以要求24小时时间:

var prompt = prompt("What time is it?", "24 hour time only"); 
 
prompt = prompt.replace(":", "");//replaces : in 9:25 
 
prompt = parseInt(prompt);//get the integer part of prompt 
 
if (prompt > 6 && prompt < 9 || (prompt > 600 && prompt < 900)) {//between 6-9 am 
 
    //do something 
 
} 
 
else if (prompt > 17 && prompt < 20 || (prompt > 1700 && prompt < 2000)) {//between 5-8 pm 
 
    //do something 
 
} 
 
else {//neither 
 
    //do something 
 
}

解决方案2:如果它结束 检查与“am”或“pm”:

var prompt = prompt("What time is it?", "8am"); 
 
prompt = prompt.replace(":","");//replaces : in 9:25am 
 
if (prompt.substr(-2,2) == "am") { 
 
    var time = "am"; 
 
} 
 
else if (prompt.substr(-2,2) == "pm") { 
 
    var time = "pm" 
 
} 
 
else { 
 
    alert('not a time'); 
 
} 
 
prompt = parseInt(prompt); 
 
if (prompt > 6 && prompt < 9 && time == "am" || (prompt > 600 && prompt < 900 && time == "am")) { 
 
    alert("6-9 am"); 
 
} 
 
else if (prompt > 5 && prompt < 8 && time == "pm" || (prompt > 500 && prompt < 800 && time == "pm")) { 
 
    alert("5-8 pm"); 
 
} 
 
else { 
 
    //do something 
 
}

+0

如果我输入'“9:25 PM”'怎么办?这当然是一个有效的时间 – charlietfl

+0

我已经修复了错误。 – k97513

+0

从上午和下午有什么不同?所以上午11点到下午2点?以及任何其他小时进入? –

相关问题