2014-11-24 103 views
0

我有這個程序的麻煩。我輸入上午時間和下午時間。然而,當我到達12點時,一切都會變得混亂。它繼續添加13,14,15等。有沒有辦法我可以設置13 = 1,14 = 2,15 = 3等。上午和下午幫助在java

String format = "HH:mm:ss a"; 
SimpleDateFormat time = new SimpleDateFormat(format, Locale.US); 
System.out.println("enter what time first person is leaving"); 
int leaving1 = in.nextInt(); 
System.out.println("enter if 1(am) 2(pm)"); 
int ampm = in.nextInt(); 

if (ampm == 1 && ampm2 == 2){ 

while (leaving1 <= 12){ 

sametime++; 
} 
leaving1 = leaving1+sametime-12; 
System.out.println(leaving1); 
+0

這聽起來像它只是用24小時制,這與AM和PM摒棄:如果你要幾個小時前導零1到10之間

String format = "h:mm:ss a"; 

或用兩個。您必須向我們提供您的代碼示例,以便我們可以獲得更好的圖片,但我認爲PSR的答案可能會幫助您解決問題。 – Makoto 2014-11-24 05:32:11

+0

即使它以24小時制格式存儲它也不用擔心可以使用SimpleDateFormat將其轉換爲12小時制。 但確保SimpleDateFormat應該在方法中進行本地初始化,因爲它不是線程安全的。 – Pushkar 2014-11-24 05:37:21

+0

我添加了一些示例代碼@Makoto – 2014-11-24 05:48:25

回答

0

你的時間格式不正確。

根據SimpleDateFormat,HH:mm:ss a的文檔將始終以24小時製表示產生時間格式,因爲H適用於輸出24小時時間值。

修復很簡單:將其更改爲小寫字母h。

String format = "hh:mm:ss a"; 
+0

爲什麼不能打印出來? (在第二個代碼段中) – 2014-11-24 06:36:43

+0

這不是我想要回答的問題......看起來像是你偷偷摸摸的那樣。但是,你在那裏有一個無限循環。如果你打算在循環中使用它,你最好弄清楚爲什麼你不更新'leaving1'。 – Makoto 2014-11-24 06:38:07

+0

leaving1是我輸入的一個數字 – 2014-11-24 06:43:02