簡體   English   中英

解析非標准日期格式,例如“ + 0yyyyMMdd”

[英]Parse non-standard date format like “+0yyyyMMdd”

我有日期,以+ 0yyyyMMdd格式出現在我們的系統中

例如,2011年3月12日為+020110312

目前,它肯定是+符號,並且在Date之前是一個0 ,但將來可能是多個 ,例如+000020110312

是否可以使用標准Java java.text.DateFormat.parse(String source)對其進行解析?

還是我應該編寫自定義解析方法?

謝謝。

我猜想+0是時區指示器,因此您可以嘗試:

new SimpleDateFormat("ZyyyyddMM")

las,這無法立即生效。

為了使其工作,請獲取從0length - 8的子字符串length - 8 ,並將其擴展為四位數字,以滿足時區的RFC。 參見SimpleDateFormat

如果+0前綴是常量,則可以使用單引號將其引起來。

String string = "+020110312";
Date date = new SimpleDateFormat("'+0'yyyyMMdd").parse(string);
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011

(根據我的時區,結果是正確的)

請注意,月份以MM而非mm表示。 mm代表分鍾。 使用mm數月會破壞解析結果。

也可以看看:


更新 :由於將來似乎有所不同, “但將來可能會超過一個零” ,因此您最好考慮對最后8個字符進行子字符串化。

String string = "+020110312";
Date date = new SimpleDateFormat("yyyyMMdd").parse(string.substring(string.length() - 8));
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011

我會將您的表示形式的最后8個字符細分為字符串,然后對其進行解析。 (我不確定您是否可以安全避免這種情況)

您可以使用SimpleDateFormat解析日期部分。

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.parse("20110312");

但是您將需要去除“ +000”前綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM