簡體   English   中英

SimpleDateFormat拋出+0100的解析異常

[英]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處失敗,這意味着該問題與時區無關,而與字母中日期無關。

您應該設置SimpleDateFormatLocale

    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.

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