[英]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.