[英]Parse a String to Date in Java
我正在嘗試將字符串解析為日期,這就是我所擁有的:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
要解析的字符串是這樣的:
Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)
我關注了http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
很確定我已經完成了這本書的所有內容。 但它給了我ParseException
。
java.text.ParseException: Unparseable date:
"Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)"
我究竟做錯了什么? 我試過的模式:
EEE MMM dd yyyy HH:mm:ss zzz
EEE MMM dd yyyy HH:mm:ss zZ (zzzz)
你似乎在混合z
和Z
的模式。 如果忽略(FLE Daylight Time)
,由於這與GMT+0300
信息相同,因此SimpleDateFormat
需要GMT +0300
或GMT+03:00
。 最后一個變體可以像這樣解析:
String time = "Sun Jul 15 2012 12:22:00 GMT+03:00 (FLE Daylight Time)";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zzz");
Date date = sdf.parse(time);
[編輯]
根據關於其時間字符串工作的其他帖子,這可能是因為您的時間字符串包含沖突的信息或混合格式。
試試這種方式..
System.out.println(new SimpleDateFormat(
"EEE MMM dd yyyy HH:mm:ss zZ (zzzz)").format(new Date()));
輸出我得到:
Thu Jul 12 2012 12:41:35 IST+0530 (India Standard Time)
您可以嘗試打印日期格式字符串:
/**
* @param args
*/
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
Date date = new Date();
try {
//
System.out.println(sdf.format(date));
date = sdf.parse(time);
} catch (Exception e) {
e.printStackTrace();
}
}
如果您在使用區域設置時遇到問題,則可以為整個應用程序設置默認區域設置
Locale.setDefault(Locale.ENGLISH);
或者只是在SimpleDateFormat
上使用英語語言環境
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.ENGLISH);
您還可以使用Locale.US
或Locale.UK
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.