簡體   English   中英

在Java中將字符串解析為日期

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

你似乎在混合zZ的模式。 如果忽略(FLE Daylight Time) ,由於這與GMT+0300信息相同,因此SimpleDateFormat需要GMT +0300GMT+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.USLocale.UK

暫無
暫無

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

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