2013-10-11 53 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

相關問題