[英]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,這無法立即生效。
為了使其工作,請獲取從0
到length - 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.