2016-11-15 73 views
0

這是針對從12小時格式到軍用/ 24小時時間轉換的問題。
標準輸入:07:05:45PM
預期的輸出:19:05:45
標準/實際輸出:019:05:45
的問題在輸出的開始在於零^從24小時時間轉換開始刪除零點

我試圖設置parseInt()的十進制數字系統的基數爲10,但沒有任何效果。

這是這下面的代碼結果:

function main() { 
    var time = readLine(); 

    var hours = parseInt(time.substr(0, 2), 10); 
    var minutes = parseInt(time.substr(3,5)); 
    var seconds = parseInt(time.substr(6,8)); 

    if (time.indexOf('AM') !== -1 && hours === 12) { 
    time = time.replace('12', '00'); 
    } 
    if (time.indexOf('PM') !== -1 && hours < 12) { 
    time = time.replace(hours, (hours + 12)); 
    } 

    time = time.replace(/(AM|PM)/g, ''); 
    console.log(time); 
} 

任何幫助,將不勝感激!

+0

試試這個:hours = + hours –

+0

我不明白你的意思。你認爲應該放在哪裏? –

+0

time = time.replace(hours,(hours + 12)); –

回答

1

你可以重建字符串而不是使用replace。因爲你在你的例子中使用replace,所以你只需要用19替換7。如果你有像12:12:12那樣的時間,使用replace也會導致問題。

ex。

function main() { 
    var time = readLine(); 

    var hours = parseInt(time.substr(0, 2), 10); 
    var minutes = time.substr(3,5); 
    var seconds = time.substr(6,8); 

    if (time.indexOf('AM') !== -1 && hours === 12) { 
    hours = 0; 
    } 
    else if (time.indexOf('PM') !== -1 && hours < 12) { 
    hours += 12; 
    } 

    time = (hours < 10 ? "0" + hours : hours) + ':' + minutes + ':' + seconds; 
    console.log(time); 
} 
+0

大部分工作原理!我只需要添加一個條件來包含每小時/分鐘/秒(時間=小時+':'+(分鐘<10?「0」+分鐘:分鐘)+':'+(秒<10?「0」+秒:秒)。 ' –

+0

是的,我錯過了Jon,我更新了它來解決這個問題。沒有必要將分鐘和秒轉換成整數,因爲它沒有必要對這些變量使用條件語句,但是你應該花幾個小時來處理條件句。 –

+0

謝謝!雖然,看起來如果我不將它們轉換爲整數,我仍然會將AM/PM輸入到輸出中,這很奇怪,因爲'substr()'應該處理它。我將把它留給轉換和條件來通過測試用例,但我一定會研究爲什麼它沒有它們仍然會這樣做。謝謝你的幫助雅各! –

相關問題