簡體   English   中英

意外的java SimpleDateFormat解析異常

[英]Unexpected java SimpleDateFormat parse exception

我無法理解為什么這幾行

    Date submissionT;
    SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

    public time_print(String time) {
        try {
          submissionT=tempDate.parse(time);
        }
        catch (Exception e) {     
          System.out.println(e.toString() + ", " + time);
        }

    }

導致異常並打印出來

    java.text.ParseException: Unparseable date: "Tue Mar 31 06:09:00 CEST 2009", Tue Mar 31 06:09:00 CEST 2009

...雖然“不可解決的”時間符合我傳遞給SimpleDateFormat()的格式字符串..任何想法?

這是一個Locale問題。 采用:

sdf = SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.US);

適合我。

public class Main {

public static void main(String[] args)
{
    time_print("Tue Mar 31 06:09:00 CEST 2009");
}

static Date submissionT;
static SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

public static void time_print(String time) {
    try {
      submissionT=tempDate.parse(time);
      System.out.println(submissionT);
    }
    catch (Exception e) {
      System.out.println(e.toString() + ", " + time);
    }

}

}

格式中的“z”表示TimeZone,Java僅識別某些時區ID。 您可以將TimeZone類中的列表作為字符串數組獲取。 CEST沒有出現在我剛剛從JDK 1.5生成的列表中

String[] aZones = TimeZone.getAvailableIDs();
    for (int i = 0; i < aZones.length; i++) {
        String string = aZones[i];
        System.out.println(string);
    }

希望這可以幫助。

暫無
暫無

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

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