java 日期转换异常

阿宝洁猪 2016-11-14 11:52:34

Caused by: java.text.ParseException: Unparseable date: "2017-01-06 00:00:00"
at java.text.DateFormat.parse(DateFormat.java:357) ~[na:1.7.0_79]
at com.zt.hrc.util.DateUtil.fomatDate(DateUtil.java:335) ~[classes/:na]
... 116 common frames omitted
[ERROR] 2016-11-14 08:56:15.668 [http-bio-8080-exec-4] c.z.h.resolver.MyExceptionResolver - ==============异常结束=============
[DEBUG] 2016-11-14 08:56:15.668 [http-bio-8080-exec-4] o.s.web.servlet.DispatcherServlet - Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: materialized View is [org.springframework.web.servlet.view.json.MappingJackson2JsonView: unnamed]; model is {message=操作失败,【2017-01-06 00:00:00】日期校验不通过, errorCode=0, ok=false}
com.zt.hrc.exception.BizException: 操作失败,【2017-01-06 00:00:00】日期校验不通过
at com.zt.hrc.util.DateUtil.fomatDate(DateUtil.java:337) ~[classes/:na]
at com.zt.hrc.service.attendance.AttendanceSettingScheduleService.countTimesBiz(AttendanceSettingScheduleService.java:1345) ~[classes/:na]
at com.zt.hrc.service.attendance.AttendanceSettingScheduleService$$FastClassBySpringCGLIB$$e3104224.invoke(<generated>) ~[spring-core-4.0.4.RELEASE.jar:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.0.4.RELEASE.jar:4.0.4.RELEASE]




DateUtil.java
/**日期格式:yyyy-MM-dd HH:mm:ss**/
public final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public static Date fomatDate(String date, SimpleDateFormat format) {

if(StringUtils.isBlank(date)) {
return null;
}
try {
//设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
return format.parse(date);
} catch (ParseException e) {
throw new BizException(MessageFormat.format("操作失败,【{0}】日期校验不通过", date), e);
}
}

本地测试怎么都没问题,还原不出来这错误到底是怎么弄出来的,有遇到过类似情况的大神吗?
...全文
859 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧师不奶你 2016-11-21
  • 打赏
  • 举报
回复
SimpleDateFormat 类不是线程安全的
nikyotensai 2016-11-21
  • 打赏
  • 举报
回复
引用 7 楼 fengspg 的回复:
public final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
全局变量放到局部变量里面去就好了。

public static Date fomatDate(String date, SimpleDateFormat format) {
         SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if(StringUtils.isBlank(date)) {
            return null;
        }
        try {
            //设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
            format.setLenient(false);
            return format.parse(date);
        } catch (ParseException e) {
            throw new BizException(MessageFormat.format("操作失败,【{0}】日期校验不通过", date), e);
        }
    }
Intboy 2016-11-17
  • 打赏
  • 举报
回复
public final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
全局变量放到局部变量里面去就好了。

public static Date fomatDate(String date, SimpleDateFormat format) {
         SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if(StringUtils.isBlank(date)) {
            return null;
        }
        try {
            //设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
            format.setLenient(false);
            return format.parse(date);
        } catch (ParseException e) {
            throw new BizException(MessageFormat.format("操作失败,【{0}】日期校验不通过", date), e);
        }
    }
572966155 2016-11-17
  • 打赏
  • 举报
回复
有没有可能是系统语言问题,加个Locale.CHINA或者Locale.ENGLISH试试,被这个坑过很多次
阿宝洁猪 2016-11-17
  • 打赏
  • 举报
回复
引用 3 楼 a276202031 的回复:
代码看不出问题 楼上也说了 你设置了静态常量,你吧static 去掉试一下
这是一个工具类,里面方法都是static的,如果把常量的static去掉的话,那引用的方法就会报错
阿宝洁猪 2016-11-17
  • 打赏
  • 举报
回复
对,是在并发的情况下出现的。但是为什么会出现这种情况呢?
浮云若水 2016-11-15
  • 打赏
  • 举报
回复
代码看不出问题 楼上也说了 你设置了静态常量,你吧static 去掉试一下
piterlin 2016-11-14
  • 打赏
  • 举报
回复
是在并发的情况下报错吗? 如果是,就把public final static SimpleDateFormat sdfTime 去调。 原文:同步 日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。 参考:http://www.coderhelper.top/doc/jdk6_cn/java/text/SimpleDateFormat.html
阿宝洁猪 2016-11-14
  • 打赏
  • 举报
回复
自己先顶一下,有人没

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧