首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleDateFormat给出ParseException

SimpleDateFormat给出ParseException
EN

Stack Overflow用户
提问于 2014-01-25 15:22:39
回答 1查看 101关注 0票数 0

我是新来的。我习惯于使用C#,但我是java的新手。我试图从一个jSpinner (日期模型)中获取一个小时字符串,但是我总是会出错。我调查了一些已经给出的答案。但还是没用。

uurStr返回“2014年CET 2014年1月25日16:09:49”,我正在试着把"16:09“从里面拿出来。但到目前为止没有运气..。有什么想法吗?异常将抛出在"uurDate = sdf.parse(uurStr);“部分上。

代码语言:javascript
复制
        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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-25 16:53:45

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

代码语言:javascript
复制
final SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

如果没有设置区域设置,则采用JRE的默认区域设置。这可能是OS默认区域设置或特定于用户的区域设置,或者区域设置可能已被另一个具有Locale.setDefault(Locale.XXXX)的Java类覆盖。在任何一种情况下,这都可能是正确的区域设置。

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

代码语言:javascript
复制
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

在您的示例中,时区是可用的,您不必担心这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21352380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档