簡體   English   中英

無法解析字符串至今

[英]Can't parse string to date

服務器以格式“ Sat,10 Jan 2015 07:24:00 +0100”返回我日期。

我嘗試解析此字符串至今,但未成功。

這是我的解析代碼:

    SimpleDateFormat format = new SimpleDateFormat("dd.Mm.yyyy");
        try {
            Date date = format.parse("Sat, 10 Jan 2015 07:24:00 +0100");
            tvDate.setText(date.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }

這是您要使用的格式:

SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

為什么?

文檔遍歷了符號 ,但是在大多數情況下...

  • EEE匹配速記日
  • dd匹配兩位數的日期(所以01到31)
  • MMM匹配三個字母的月份(因此1月)
  • yyyy匹配一個四個字母的年份
  • HH:mm:ss Z是完整24小時時鍾的簡寫(足夠), Z表示與GMT的偏移量。

如果您不關心+0100,則應使用以下格式:

SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss");

E-是星期幾,例如“星期六”

d-每月的一天

M-是月份

y-是年份

h-是小時

m-分鍾

s-是第二個

如果您真的很在意時區,那么您需要做的就是將SimpleDateFormat實例的String格式更改為代表要返回的日期String的格式。

這是一個例子:

public static Date stringToDate(String dateString) throws ParseException {
    final SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
    return format.parse(dateString);

}

public static void main(final String[] args) throws ParseException {
    Date example = stringToDate(
            "Sat, 10 Jan 2015 07:24:00 +0100");
}

您可能還需要考慮SimpleDateFormat不是線程安全的,如果使用不正確,可能會導致意外行為。 這是一個非常有用的解釋:

http://javarevisited.blogspot.com/2012/03/simpledateformat-in-java-is-not-thread.html

暫無
暫無

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

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