我在嘗試格式化已創建的時間字符串時遇到了一些問題,我正在嘗試僅使用日期和時間轉換字符輸出HH:mm格式的時間在此website用SimpleDateFormat顯示HH:MM
DateFormat time = new SimpleDateFormat("HH:mm R");
我沒有得到任何的問題,而在「R」,但接着將其輸出的整個日期和時間,擊敗我的目標。
我在嘗試格式化已創建的時間字符串時遇到了一些問題,我正在嘗試僅使用日期和時間轉換字符輸出HH:mm格式的時間在此website用SimpleDateFormat顯示HH:MM
DateFormat time = new SimpleDateFormat("HH:mm R");
我沒有得到任何的問題,而在「R」,但接着將其輸出的整個日期和時間,擊敗我的目標。
嗯,R
是not documented to mean anything但文檔清晰地說,所有其他格式化字符「......從‘A’到‘Z’和‘a’到‘Z’被保留......」,所有如果您在格式化字符串中使用R
,則您將會得到什麼結果。
刪除R
。如果您的目標是在字符串末尾有R
,請將其附加到結果中。如果沒有,請查閱文檔以查看您應該使用的格式化字符。
SimpleDateFormat在javadoc中沒有「R」 - 它表示所有未指定的字母都是保留的。我不知道你的網站在哪裏得到它...
根據date/time formatting symbols for SimpleDateFormat
,沒有"R"
。實際上,我得到一個IllegalArgumentException
嘗試使用"R"
。您可以使用DateFormat time = new SimpleDateFormat("HH:mm R");
。
但是,printf
recognizes a different set of symbols格式化日期,並"R"
定義有:
'R' Time formatted for the 24-hour clock as "%tH:%tM"
你參考的網站也提到"R"
- 下printf
部分,而不是SimpleDateFormat
。它提到在所有日期/時間格式符號前加上t
。
嘗試
System.out.printf("%tR", new Date());
你不需要 'R'。如果你想要24小時的「軍事」時間,只需要使用大寫'HH'並完成它。刪除R,你應該得到你想要的。如果你不這樣做,你可能在你的代碼中做了一些你沒有發佈的錯誤。
什麼是R?你爲什麼使用R? –