2013-10-11 93 views
2

希望能得到一些帮助。我是JS的总新手。我必须编写一个脚本,询问用户当前的时间。这很容易。如果小时在上午6点到上午9点之间,它会给出一定的提示。如果时间在上午11点到下午1点之间,另一个提示。如果在下午5点到8点之间,提示。我的问题是如何让JS明白,当用户进入让我们说5号,它是下午5点(晚餐时间),而不是5点(去吃点心)。请帮帮我。什么是解决我的问题?在美国没有人真正使用24小时制格式,因此我的脚本中的数字13(1pm),17(5pm)或20(8pm)不会工作。我只能以12小时时间格式输入。如何使JS解析12小时输入格式为24或

var hour=prompt("What is the current hour? ",""); 

    if(hour >= 6 && hour <= 9){ 
    alert("Breakfast is served."); 
    } 
    else if(hour >=11 && hour <= 13){ 
    alert("Time for lunch."); 
    } 
    else if(hour >=17 && hour <= 20){ 
    alert("It's dinner time."); 
    } 
    else { 
    alert("Sorry, you'll have to wait, or go get snack."); 
    } 
+1

最简单的选择是要求用户也输入上午/下午(在提示中提供格式字符串)。因为当他们输入一个数字值时,你将无法弄清楚用户心中有什么(AM/PM)。然后,如果AM使用输入值(或)PM(如果),则将12添加到输入的值。 – Harry

+0

[This](http://jsfiddle.net/vX4mu/)是一个非常原始的样本。 – Harry

+0

谢谢。我也这么想。如果没有额外的信息,上午或下午,这只会令人沮丧。 – user2869575

回答

1

我会用JavaScript's String.match()字符串比较的RegExp描述小时格式如/^(\d{1,2})\s*(am|pm)?$/i。此正则表达式意味着:

  • ^匹配字符串的开始
  • (\d{1,2})匹配并捕获1个或2位(即,0-9)
  • \s*匹配0或多个空白字符
  • (am|pm)?任选匹配和捕获'am''pm'
  • $匹配字符串的末尾
  • i在端装置忽略用于比赛的上/ lowercasing(即匹配'am''AM'

此外,我会到处乱扔的提示的环的情况下,用户没有输入正确的格式。

这是一个完整的示例。

var hour; 
var done = false; 

while (!done) { 
    var answer = prompt("What is the current hour?",""); 
    var result = answer.match(/^(\d+)\s*(am|pm)?$/i); 
    if (result) { 
    hour = +result[1]; 
    if (result[2] && result[2].match(/pm/)) { 
     // If pm was specified, add 12 
     hour += 12; 
    } 
    if (hour < 24) { 
     done = true; 
    } 
    } 
} 

... Your code as before 
+0

谢谢soooo多。它确实有用!我永远无法弄清楚这一点。 – user2869575

1

好做出解析器解析12>24小时 你可以这样做:

var hour = prompt("What is the current hour? ",""); 
var apm = hour.replace(/[0-9]/g, ''); 
var thour = "" 
if(apm = "am"){ 
    thour = parseInt(hour); 
    out(thour); 
} 
else{ 
    thour = parseInt(hour) + 12; 
    out(thour); 
} 
out = function(hour) { 
(Your Code Here) 
} 

这就是我的工作了,输出是INT。 所以请单独留下代码。
输出24小时内完成。

+0

由于某些原因,当我将代码添加到它时,这不适用于我。 – user2869575

+0

你必须把你的代码放在一个名为out的函数中 – mjz19910

相关问题