[英]Unparseable Date with SimpleDateFormat
我將MySQL
DATE
(來自Web服務)存儲在SQLite
TEXT
。
我在處理日期時不是專家,因此在搜索時,我發現您將日期字符串解析為java.util.Date
。
這是我的結果:
// Works like a charm
new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH).parse(strdate)
// Unparseable date exception
new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH).parse(strdate);
請給我一些指導嗎?
您正在指示日期解析器輸入的strdate
格式為dd-MMM-yyyy
。 但實際上它是EEE MMM dd kk:mm:ss z yyyy
格式。
+----------------------------+------------------------------+-------------------+
| date pattern you tried | your strdate input | pattern | parse |
| | | matched? | error? |
+----------------------------+------------------------------+----------+--------+
| EEE MMM dd kk:mm:ss z yyyy | Fri Apr 04 06:55:24 GMT 2014 | yes | no |
+----------------------------+------------------------------+----------+--------+
| dd-MMM-yyyy | Fri Apr 04 06:55:24 GMT 2014 | no | yes |
+----------------------------+------------------------------+----------+--------+
如果您試圖重新格式化相同的日期字符串以用於顯示,那么
范例 :
String strdate = "Fri Apr 04 06:55:24 GMT 2014";
String currentPattern = "EEE MMM dd kk:mm:ss z yyyy";
SimpleDateFormat sdf = new SimpleDateFormat( currentPattern, Locale.ENGLISH );
Date dt = sdf.parse( strdate ); // new date is constructed
System.out.println( dt );
String newPattern = "dd-MMM-yyyy"; // new pattern is defined
sdf.applyPattern( newPattern ); // the same is applied
String new_strdate = sdf.format( dt ); // on the date object
System.out.println( new_strdate ); // resulting new string form of date
輸出如下:
Fri Apr 04 06:55:24 GMT 2014
04-Apr-2014
嘗試這個:
然后,以所需的格式進行打印,您需要第二個SimpleDateFormat:示例代碼
SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
Locale.ENGLISH);
Date parsedDate = sdf.parse(date);
SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
System.out.println(print.format(parsedDate));
筆記:
您應該包括語言環境,就好像您的語言環境不是英語一樣,可能無法識別日期名稱。
IST含糊不清,可能會導致問題,因此,如果可能,請在輸入中使用正確的時區名稱。
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#timezone
你可以這樣解析
Date yourdate = format.parse(strdate);
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy");
String date = DATE_FORMAT.format(yourdate);
System.out.println("dd-MMM-yyyy format : " + date);
dd-MMM-yyyy format : 04-Apr-2014
parse
期望Date String為您在SimpleDateFormat
構造函數中指定的格式。 檢查存儲在SQLite中的日期,它的格式可能為“ EEE MMM dd kk:mm:ss z yyyy”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.