SimpleDateFormat提供ParseException

时间:2014-01-25 15:22:39

标签: java

我在这里很新。我习惯使用C#,但我是java的新手。 我试图从jSpinner(日期模型)中获取一小时的字符串,但我不断收到错误。我已经研究过这里已经给出的一些答案......但它仍然无效。

uurStr返回“2014年1月25日16:09:49 CET 2014”,我试图让“16:09”退出。但到目前为止没有运气......任何想法? 在“uurDate = sdf.parse(uurStr);”​​上抛出异常部分。

        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        SimpleDateFormat outputFmt = new SimpleDateFormat("HH:mm");
        String uurStr = String.valueOf(jSpinner1.getValue());
        Date uurDate = null; 
        try {
            uurDate = sdf.parse(uurStr);
        } catch (ParseException ex) {
            Logger.getLogger(frmBackEnd.class.getName()).log(Level.SEVERE, null, ex);
        }
        String uur = outputFmt.format(uurDate); 
        JOptionPane.showMessageDialog(null, uur);

1 个答案:

答案 0 :(得分:0)

为了正确解析工作日和时区信息(两者都是特定于语言的),有必要按如下方式设置语言环境:

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

如果未设置区域设置,则会采用JRE的默认区域设置。这可能是操作系统默认语言环境或用户特定语言环境,或者语言环境可能已被另一个Locale.setDefault(Locale.XXXX)的Java类覆盖。在任何这些情况下,这可能是正确的区域设置。

也就是说,设置时区通常更安全,或者如果要解析的字符串中没有时区,则可能会收到错误的时间信息:

sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

在您的示例中,时区可用,您无需担心。