Java中使用SimpleDateFormat转换异常

异常代码:
String min = request.getParameter("minTime");
String max = request.getParameter("maxTime");
Date startTime = dateFormat.parse(dateFormat.format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(min)));

                Date stopTime = dateFormat.parse(dateFormat.format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(max)));

异常信息:
java.text.ParseException: Unparseable date: "6/1/2015 14:23:05"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.pumandai.cps.controller.CpsController.toCpsLists(CpsController.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:745)

4个回答

java.text.ParseException: Unparseable date: "6/1/2015 14:23:05"
异常已经说明了你传入的日期格式与你定义的格式yyyy-MM-dd HH:mm:ss不符合,你传入的应该是2015-06-01 14:23:05才行。

不明白为什么你要用三次dateformat,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(min)不就可以得到Date对象了么?

tongyi55555
JonsonJiao 回复baidu_28843887: Date是没有格式的,输出的格式是通过new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")里面的参数来定义的
4 年多之前 回复
baidu_28843887
baidu_28843887 谢谢您了,这么仔细的讲解。不好意思的是自己没有C币给你。反正还是感谢您的解答!谢谢
4 年多之前 回复
baidu_28843887
baidu_28843887 回复那一抹代码: 菜鸟一枚。不怎么懂。SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 这样就可以获取到一个yyyy-MM-dd HH:mm:ss格式的Date了吗?
4 年多之前 回复
tongyi55555
JonsonJiao 回复baidu_28843887: 你搞混了吧,你穿进去的不就是字符串么,你需要将字符串转成Date。你现在输出的是Date对象默认的toString方法,带CST的。
4 年多之前 回复
baidu_28843887
baidu_28843887 回复那一抹代码: 刚才试过了。先转成String后没问题输出:2015-06-01 16:24:53。但是当String转成Date值变成了Mon Jun 01 16:24:53 CST 2015请问有什么解决办法吗?
4 年多之前 回复
tongyi55555
JonsonJiao 回复baidu_28843887: 怎么就说不明白呢。你传进来的是一个字符串,需要将其转化为Date对象,因为传入的格式是MM/dd/yyyy,因此要先用这个格式的dateformat进行转换,转换之后就得到了Date对象,用一次就可以拿到Date startTime 了,至于你以后怎么使用这个对象,怎么往数据库里放跟这个Date对象没有关系,他就是一个日期对象,存储到数据库时如果传的是日期字符串,你再将其转换成想要的形式就可以了。
4 年多之前 回复
baidu_28843887
baidu_28843887 回复那一抹代码: 那不就跟我一开始写的一样了吗?
4 年多之前 回复
baidu_28843887
baidu_28843887 回复那一抹代码: 就是说先转成 MM/dd/yyyy的格式后然后在用dateFormat转成数据库需要的类型吗?
4 年多之前 回复
tongyi55555
JonsonJiao 回复baidu_28843887: 哦明白你的意思了,你先把传入的字符串转换为date类型的,用MM/dd/yyyy形式的,有了date对象后你就可以把它转换为你想要的数据库中的形式了。
4 年多之前 回复
baidu_28843887
baidu_28843887 回复那一抹代码: 但是我数据库的格式是yyyy-MM-dd HH:mm:ss 的。如果换成你说的这种格式还能查到数据吗
4 年多之前 回复
tongyi55555
JonsonJiao 回复baidu_28843887: new SimpleDateFormat("MM/dd/yyyy HH:mm:ss")换成这个
4 年多之前 回复
baidu_28843887
baidu_28843887 我一开始也是就用一次dateFormat的但是一直异常就这么写了。因为我用的是easyUI-datetimebox,页面获取的就是“6/1/2015 14:23:05”请问如何解决?
4 年多之前 回复

直接 使用一次将字符串转换为Date类型就可以了吧

baidu_28843887
baidu_28843887 因为我用的是easyUI-datetimebox,页面获取的就是“6/1/2015 14:23:05”请问如何解决?
4 年多之前 回复

你看下这个代码:

private static void strDateStr() {
        String dateStr = "6/1/2015 14:23:05";

        // String转换为Date,格式字符串必须与上面传入的日期字符串对应,不然会报ParseException
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        try {
            Date date = sdf.parse(dateStr);
            // 输出date日期,调用date的默认打印方法
            System.out.println("默认的日期输出格式:" + date);

            // 格式化date的输出样式,需要指定想要的格式,比如输出2015-06-01 12:11:11格式的
            SimpleDateFormat outSdf = new SimpleDateFormat(
                    "yyyy-MM-dd HH:mm:ss");
            String outDateStr = outSdf.format(date);
            System.out.println("格式化后的日期输出格式:" + outDateStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

输出的内容为:

 默认的日期输出格式Mon Jun 01 14:23:05 CST 2015
格式化后的日期输出格式:2015-06-01 14:23:05

初始化SimpleDateFormat时使用的格式字符串与你传入的日期格式不一致。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
多线程下SimpleDateFormat使用出错
风吹走了乌云 2017-04-09 20:54 SimpleDateFormat类大家在开发过程中肯定使用过无数次了,它主要用来日期的转换与格式化,但是在多线程的环境下,使用这个类会造成数据转换及处理的不一致性,因为SimpleDateFormat类是线程不安全的。 看一下下边这个错误使用示例: 看运行结果: 从控制台可以看出,使用SimpleDateFormat出
Java异常处理,SimpleDateFormat中的parse函数操作
对于Runtime Exception我们可能都比较熟悉,try catch用用,捕获异常再做点处理,但是前几天想用java算两个日期之间时间差,百度到一段代码是这样的: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");    long to = df.parse("2015-5-15").getTime();     lon
【转】SimpleDateFormat 时间处理错误等奇葩原因 非线程安全处理
类SimpleDateFonnat主要负责日期的转换与格式化,但在多线程的环境中,使用此类容易造成数据转换及处理的不准确,因为SimpleDateFormat类并不是线程安全的。 1.出现异常     本示例将实现使用类SimpleDateFormat在多线程环境下处理日期但得出的结果却是错误的情况,这也是在多线程环境开发中容易遇到的间题。[java] view plain copy print?p
java SimpleDateFormat日期格式转换错误
线上环境,更新用户信息时,姓名性别能更新成功,生日没更新。但同事说本地开发又没问题,生日能更新。 检查关键源码如下: if(birthDay!=null && birthDay.length()>0){ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd "); Date date;...
记一次SimpleDateFormat的坑,错误的格式竟然不抛异常!
这一次的教训源于我们工具类里的一个方法,我们前端传了2018-05-01给我,我后端需要的参数只是2018-05,结果没有拦住!查询结果与预期结果不符!下面是工具类的方法。 /** * <pre> * 检查入参是否为合法的年月字符串。 * @param inDate 格式为yyyy-MM * @return * </pre> */ public s...
java中使用SimpleDateFormat实现字符串和日期的相互转换
java中使用SimpleDateFormat实现字符串和日期的相互转换 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTool { /** * 字符串转换为日期 * @param string
SimpleDateFormat 时间转换错误问题
NC65 单据转换规则配置公式时,dateformat(dloadlimitdate,"YYYYMM")当时间dloadlimitdate设置为2017-12-31 00:00:00时,公式值为201812。 正常应为201712,并且其他日期均正常,只有2017-12-31 日期时转换错误。 仔细阅读了下公式的说明: dateFormat(date, pattern[,language])
SimpleDateFormat中的YYYY和yyyy引起的parse和format的错误输出
SimpleDateFormat的parse方法输出错误 在编码过程中发一个异常现象,SimpleDateFormat的parse方法总是输出当前年份的第一天。 仔细发现是因为在new SimpleDateFormat时使用了YYYY,而不是yyyy,具体现象及代码实现如下: @Test public void testYandy() { // String d...
多线程SimpleDateFormat日期格式化与ThreadLocal用法
前言 SimpleDateFormat 是 JDK 提供的一个日期格式化和解析类,但它是非线程安全的,原因如下。 1. parse方法 Date parsedDate; try { parsedDate = calb.establish(calendar).getTime(); // If the year v...
对日期类型的校验不能使用simpleDateFormat的原因
先从例子开始 String d = "1982-08-32"; SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd"); Date date=df.parse(d); systom.out.print(date);  //上面的错误日期,它是不会报异常的。 SimpleDateFormat 不能屏蔽输入的错误日期(String d
Date时间转换问题SimpleDateFormat中的parse和format方法问题
1.我是Java程序开发,今天开发的时候遇到一个问题  首先我从数据库查询出来的数据 有三个是时间格式 数据库中的图 其次 我在后台Java处理的代码 我用rzDate转换数据库中的kssj格式 下面变成这样 然后将2018-10-23这个字符串转换为date格式的 理应是2018-10-23的date格式的数据啊 但是变成这样了Tue Oct 23 18:23:17 CST 20...
SimpleDateFormat日期转换之线程安全问题解决方案
java 日期转换,线程安全问题 java.text.SimpleDateFormat,是线程非安全,原因在于SimpleDateFormat中,使用到了Calendar类对象,在执行parse() 和format()方法时,调用calendar.setTime(date)方法。那么问题来了:多线程环境下,线程非安全。  解决方案:1)每次使用,都创建新实例; 2)使用三方类库。 packa...
Java_SIMPLEDATEFORMAT.PARSE解析日期错误的问题
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss SSS");//解析日期错误的问题有一部分原因是由于format格式没有对应   sdf.setLenient(false); //设置严格的编译方式 //将字符串编译为日期格式     Date date=sdf.parse("2018-09-06 21:12:06...
使用SimpleDateFormate转换日期出错
使用SimpleDateFormate转换年月日时,结果跟预期不一致,代码为:public class Main { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH
SimpleDateFormat的parse()得到的年份少一年,月份和日期都不对
问题:先进行如下代码: SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd H:m:s"); String string="2018-3-19 14:47:10"; try { Date parse = simpleDateFormat.parse(string); System.out.print...
关于SimpleDateFormat时间转换总是显示1970年的问题(时间戳转日期)
时间戳转时间总是显示1970年,我的时间戳是字符串1527643920 /* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException { String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat...
Android使用SimpleDateFormat不同手机有时格式化手机不准确
废话不多说,先上代码 /** * 格式格式化日期 * * @param date 日期 * @param format 日期格式 * @return */ public static String dateToStr(Date date, String format) { String sdate = ""; if (date != null) {
解决SimpleDateFormat输出时间差8小时的问题
打开Myeclipse 》》Windows》》preferences》》java>>installed jres之后点右边的edit弹窗。  在default vm argument里面输入设置-Duser.timezone=GMT+08,  一共2个选项 jdk和myeclipse都要设置。  OK,搞掂
Java时间处理类 SimpleDateFormat对象的parse方法处理12点变成00点
SimpleDateFormat是个用得很高频率的时间处理类 该对象的俩个主要方法: parse方法:将字符串类型(java.lang.String)解析为日期类型(java.util.Date) format方法:将日期类型(Date)数据格式化为字符串(String)   问题:使用SimpleDateFormat对象format调用函数parse("时间字符串")打印到12点和24...
Date,SimpleDateFormat,时间戳之间的转化
经典案例:SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd");Long time =1520492526443;Date endTime = sdFormat.parse(sdFormat.format(new Date(time)));new Date(time) 是把lang类型的时间戳转化为Data类型sdFormat...
SimpleDateFormat日期格式转换详解
SimpleDateFormat是处理日期格式转换的类。 官方API_1.8关于SimpleDateFormat继承于DateFormate截图: SimpleDateFormat的构造器如下: SimpleDateFormat中的格式定义,常用的用红色框圈出: 中文解释: y : 年 M : 年中的月份 D : 年中的天数 d : 月中的天数 w : 年中的周数
SimpleDateFormat转换的时间比真实时间多8小时
使用SimpleDateFormat时,时间多出8小时,网上资料说是和时区有关,具体的大家可自行百度下。下面直接所解决办法: long dt = 8000; SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss"); sd.setTimeZone(TimeZone.getTimeZone("GMT+0"));//**T
关于SimpleDateFormat安全的时间格式化线程安全问题
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一
SimpleDateFormat时间不正确的问题
开发遇到一个问题: new Date()获得的当前系统时间和经过SimpleDateFormat转换格式的时间不对应,相差一个小时。Date now = new Date(); System.out.println(now);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println
java.text.SimpleDateFormat 日期自定义格式转换类
SimpleDateFormat日期的自定义格式转换类,这个挺好用。首先需要了解一些日期的代表符号: yyyy    四位年 yy       两位年 MM    月份  始终两位 M       月份      dd      始终两位日期 d        日期 HH    24小时制  始终两位 H       24小时制 hh     12小时制  始终两位 h       12小时制 m...
SimpleDateFormat并发问题解决方案
/** * TheadLocal SimpleDateFormat * Fix SimpleDateFormat concurrency problems and increase performance * * Date date = ConcurrentDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").parse("2015-10-14 15:2
SimpleDateFormat转换日期有误
今天用Simpledate转换日期格式时始终不对,经过一小时纠结做出 原代码:SimpleDateFormat format = new SimpleDateFormat ("yyyy年mm月dd日 hh:mm:ss"); 改后:SimpleDateFormat format = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss");其中代表月份的mm要大
Java日期转换SimpleDateFormat格式大全 和 判断是否为合法的日期时间字符串?
24小时制时间显示: public class Datetime {    public static void main(String args[]){         java.util.Date current=new java.util.Date();           java.text.SimpleDateFormat sdf=new java.text.Si
SimpleDateFormat时间格式转换12、24小时
Date d = new Date(); //获取当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//转换时间格式为12小时制 System.out.println(sdf.format(d)); Simpl...
Java:SimpleDateFormat解析过程中的时区问题
(在做分布式系统开发的过程中,笔者遇到了集群中各成员显示时间数据不一致的问题,排查发现是因各个成员的系统时区设置不同,导致SimpleDateFormat类解析结果不同导致,mark一下)     Java中的SimpleDateFormat类具有将Date对象转换成指定格式的字符串,对于同一个Date对象,SimpleDateFormat在不同的时区环境下,将解析出不同的结果。     示例程序...
java获取当前时间后,经SimpleDateFormat格式化成String类型,差8小时
此问题为项目中偶遇,原案例:            //获取当前系统时间,格式为yyyy-MM-dd HH:mm:ss         TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");          TimeZone.setDefault(tz);         SimpleDateFormat df = new SimpleDate
Java之SimpleDateFormat日期格式转换(Date 和 String 类型之间的转换)
SimpleDateFormat : 可以选择任何用户定义的日期-时间格式的模式    "yyyy-MM-dd HH:mm:ss:SSS"1.格式化:Date --》String             String  format(Date date) 将Date格式化为日期/时间字符串2.解析:String --》Date           Date parse(String source...
SimpleDateFormat 的线程安全问题与解决方案
SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 但是 SimpleDateFormat 并不是一个线程安全的类,在多线程并发访问下会出现问题。通过以下代码进行检验,
SimpleDateFormat性能调优(转载)
博客分类: java 多线程华为Mapreduce框架  万能的SimpleDateFormat可以把java.util.Date对象, 或者类似 "2010-11-24 23:23:11.666"的   字符串转换成我们需要的格式或者时间对象。   但是由于时间的概念复杂,又牵扯到时区与本地化,导致了SimpleDateFormat需要处理太多的时间细节, ne...
SimpleDateFormat 转化为12小时制或者是24小时制
public static String dateToString(Date date){ SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss“); String str=sdf.format(date); return str; }public static S
java 日期格式化SimpleDateFormat Local西班牙等国家的日期格式化
java.text.SimpleDateFormat.SimpleDateFormat(String pattern, Locale locale) 中的Locale只给我们提供了部分国家作为常量来供我们调用,当我们遇到像西班牙这样它并没有提供给我们常量的国家时,我们应该怎么样来对其日期进行格式化呢? 对于Locale没有提供常量的国家我们可以通过创建Locale对象的方式实现: format = new SimpleDateFormat("d 'de' MMMM 'de' yyyy", new Local
Java日期转换 SimpleDateFormat格式(年月日时分秒)
24小时制时间显示:
Java SimpleDateFormat 中英文时间格式化转换
JAVA SimpleDateFormat 中英文时间格式互转SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat类中,日期格式大小写的问题:
SimpleDateFormat类中,日期格式大小写的问题
为什么simpleDateFormat.format(null)会报空指针异常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.format(null);在第二行会报空指针异常,为什么呢?我们进入源码看一下就知道了。第一步public final String format(Date date) { return format(date, new Strin...
相关热词 c#panel增加滚动条 c#中生成的dll文件 c# 模板类 c# 截取txt文本内容 c# 内存 占用 c#时间格式化 不带- c#替换字符串中指定位置 c# rdlc 动态报表 c# 获取txt编码格式 c#事件主动调用