[英]Java String to date conversion error for format yyyyMMddhhmmss
我只在特定的字符串字段中收到錯誤,我在下面給出了我的代碼
public static void main(String[] args) throws ParseException {
String sDate1="201710164425";
Date date1=new SimpleDateFormat("yyyyMMddhhmmss").parse(sDate1);
System.out.println(sDate1+"\t"+date1);
}
如果我將String更改為在4 sDate1="2017101604425";
之前加0 sDate1="2017101604425";
它工作正常,我得到Mon Oct 16 04:42:05 IST 2017
,但是我的輸入是通過sDate1="201710164425";
提前感謝我幫助我提供更好的解決方案
yyyyMMddhhmmss <- format
201710164425 <- data
因此,對於第4個小時,您需要執行04
(hh)而不是4。
您想要的是不帶前導零的“小時值”,我還看到分鍾和/或秒應該相同,因此可以使用類似Hms
的時間格式。
相比於HHmmss
,具有類似於格式Hms
將只需要數字量最少的為每個字段(這要復雜得多,但它的想法)。
可能會錯過解釋。 假設我想給您發送時間,例如01:21:05
,它將看起來像1215
以匹配您所需的模式。
new SimpleDateFormat("Hms")
1215-> 01:02:15
看到問題了嗎? 01:21:05
將會是01:02:15
。
我總是建議對每個字段使用前導零(兩位數),以防止出現任何錯誤。
每個字段使用兩位數字以防止出現任何問題
new SimpleDateFormat("HHmmss")
012105-> 01:21:05
您可以定義一個模式以在每個字段之間使用分隔符:
new SimpleDateFormat("H:m:s")
1:21:5-> 01:21:05
您可以使用SimpleDateFormat
另一種模式來實現所需的功能:
yyyyMMddKmmssa
哪里
K - Hour in am/pm (0-11)
a - Am/pm marker
注意,您需要最后一個'a' 。 如果只想用4表示04:00和16:00,則需要一些區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.