[英]SimpleDateFormat throws parse Exception for +0100
我正在嘗試使用日期格式的兩組日期:
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
它適用於日期:星期五,2016年8月26日13:55:34 +0000
不適用於日期:星期二,2016年9月6日11:57:14 +0100
引發+0100日期的異常。
Unparseable date: "Tue, 06 Sep 2016 11:57:14 +0100" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:555)
它在offset 0
處失敗,這意味着該問題與時區無關,而與字母中的日期無關。
您應該設置SimpleDateFormat
的Locale
。
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
Date d1 = format.parse("Fri, 26 Aug 2016 13:55:34 +0000");
Date d2 = format.parse("Tue, 06 Sep 2016 11:57:14 +0100");
工作沒有任何問題。
如果您還需要檢索時區,還必須在模式中添加z
:
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
你需要
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
請注意時區的z
。
如果未提供z
,解析器將忽略零( +0000
)情況,但不會忽略非零( +0100
)情況。 在lenient
屬性控制這種行為(確認@Marko Topolnik)。
由於您使用的是英文周名稱,因此您應該將兩參數構造函數用於SimpleDateFormat
,並將Locale.ENGLISH
作為第二個參數傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.