繁体   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