java.text.ParseException: Unparseable date: "" 急急急

lyh20081984 2008-07-05 09:36:24
昨天碰到一个辣手的问题...在此请各位大哥们指点下!!!

事情原由是我本想将一个格式为yyyy-mm-dd的型字字符串通过SimpleDateFormat转换成Date
头痛的是,如果我新建一个字符串对象如:
String str="20008-7-7";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(str);
其结果是不会报错的;

可头痛的是这个字符串是通过jsp页面请求过来的...
//请求过来的字符串格式为yyyy-m-d 如月份小于10,日期小于10即为20008-7-7; 大于10为2008-10-10;
String str=request.getParameter("begintext");---str能够得到值
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(str);
可是这样就报错了...
麻请大虾们看看,到底是哪错了...


...全文
66348 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyn7 2011-10-28
  • 打赏
  • 举报
回复
18楼正解!!!!!!!!!!
zdbinger 2011-09-28
  • 打赏
  • 举报
回复
Date beginDate=sdf.parse(begin_date);
Date endDate = sdf.parse(end_date);
你得到beginDate和endDate的值是带时分秒的 但你确定定义SimpleDateFormat simple=new SimpleDateFormat("yyyy-MM-dd");
你定义成SimpleDateFormat simple=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
试一下
千山飞鸟绝 2011-05-09
  • 打赏
  • 举报
回复
楼上捡分的死开;
perfectsky00 2010-12-06
  • 打赏
  • 举报
回复
我也遇到这样的问题。。。帮我看看。。。急。。。
private Map createConditions() {
orderMap.put("id", "DESC");
if (StringUtils.isNotEmpty(startDate)) {
greaterThanMap.put("sqshijian", formatStrToDate(startDate, "yyyy-MM-dd"));
}
if (StringUtils.isNotEmpty(endDate)) {
smallerThanMap.put("sqshijian", formatStrToDate(endDate, "yyyy-MM-dd"));
}
hongshuyu 2010-11-12
  • 打赏
  • 举报
回复
就是小问题才费时间呢~~这个囧
showthesunli 2010-10-13
  • 打赏
  • 举报
回复
挺郁闷的,老是碰这样小问题
qinfengandsky 2010-06-04
  • 打赏
  • 举报
回复
....
jintli 2010-03-23
  • 打赏
  • 举报
回复
String s = "Tue Mar 23 16:49:40 CST 2010";
Date f = new Date();
try {
f = new SimpleDateFormat().parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(f);
System.out.println(str);
wongguocai 2009-02-25
  • 打赏
  • 举报
回复
是不是没有进行空判断?我觉得字符要转换日期类型,首先要进行空判断。不然肯定会抛出这个异常。
L_Jason_T 2008-11-13
  • 打赏
  • 举报
回复
呵呵...我遇到跟你一样的问题...我试过的您的方法,可是不行..不过,试试这个方法:
Date start = (Date)dateFm.parseObject(startTime);
好像可以的...
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
我晕~~~

Date beginDate=sdf.parse(begin_date);
Date endDate = sdf.parse(end_date);
上面二行要改为:

Date beginDate=sdf.parse(begin_date.toString());
Date endDate = sdf.parse(end_date.toString);

本来就是字符串....

虽然错误小,但感谢大家参与,给分!!!
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
再检查一下,来来是可以的,可是过了一天就报错,
whetu 2008-07-05
  • 打赏
  • 举报
回复
java.text.ParseException: Unparseable date: ""
这个异常的意思 ,就是你试图把一个空字符串转换成一个日期对象。
还是空串儿啊!
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
java.text.ParseException: Unparseable date: ""
at java.text.DateFormat.parse(Unknown Source)
at com.struts.action.Dx_select_dateAction.execute(Dx_select_dateAction.java:45)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at com.myActionServlet.myActionServlet.process(myActionServlet.java:17)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
错误显示
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
String begin_date,end_date;
begin_date = request.getParameter("begintext");
end_date = request.getParameter("endtext");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date beginDate=sdf.parse(begin_date);
Date endDate = sdf.parse(end_date);
String begin_date1=sdf.format(beginDate);
String end_date1=sdf.format(endDate);

String enddate=sdf.format(endDate);
Session session = outlistdao.getSessionFactory().openSession();
SQLQuery qu = session
.createSQLQuery("select * from Cs_outlist where Cs_outlist_time between convert(varchar,'"
+ begin_date1
+ "',120) and convert(varchar,'"
+ end_date1 + "',120)");
qu.addEntity(CsOutlist.class);
List list=qu.list();
HttpSession sess=request.getSession();
sess.setAttribute("selectoutlist", list);

response.getWriter().print("<script>top.mainFrame.location='dx_OutList.jsp';</script>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
全部代码如上....
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
已经经过确认...确实是yyyy-mm-dd如"2008-7-7" 或"2008-10-21"

这个步骤还只是第一步,接下还要和与数据中的时间进行比较查询...头痛!!!
whetu 2008-07-05
  • 打赏
  • 举报
回复
String str=request.getParameter("begintext");---str能够得到值
跟踪调试一下,看看你页面上传过来的到底是怎样一个串儿?确认一下。
FL1429 2008-07-05
  • 打赏
  • 举报
回复
报错代码贴上来看看
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
输入时我是用的一个显示时间的js..自动输入文本框的,就是yyyy-m-d
lyh20081984 2008-07-05
  • 打赏
  • 举报
回复
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(str); //这个方法是把时间格式转换为字符串格式。

Date date = sdf.format(str);
String d = sdf.parse(date);

对对,我是这样写的,笔误~~可就是不行...
加载更多回复(4)
Java8新特性及实战视频教程完整版Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda 表达式可以使代码变的更加简洁紧凑。Java8实战视频-01让方法参数具备行为能力Java8实战视频-02Lambda表达式初探Java8实战视频-03Lambda语法精讲Java8实战视频-04Lambda使用深入解析Java8实战视频-05Lambda方法推导详细解析-上.wmvJava8实战视频-06Lambda方法推导详细解析-下Java8实战视频-07Stream入门及Stream在JVM中的线程表现Java8实战视频-08Stream知识点总结Stream源码阅读Java8实战视频-09如何创建Stream上集Java8实战视频-10如何创建Stream下集.wmvJava8实战视频-11Stream之filter,distinct,skip,limit,map,flatmap详细介绍Java8实战视频-12Stream之Find,Match,Reduce详细介绍Java8实战视频-13NumericStream的详细介绍以及和Stream之间的相互转换Java8实战视频-14Stream综合练习,熟练掌握API的用法Java8实战视频-15在Optional出现之前经常遇到的空指针异常.wmvJava8实战视频-16Optional的介绍以及API的详解Java8实战视频-17Optional之flatMap,综合练习,Optional源码剖析Java8实战视频-18初识Collector体会Collector的强大Java8实战视频-19Collector使用方法深入详细介绍-01Java8实战视频-20Collector使用方法深入详细介绍-02Java8实战视频-21Collector使用方法深入详细介绍-03.wmvJava8实战视频-22Collector使用方法深入详细介绍-04Java8实战视频-23Collector原理讲解,JDK自带Collector源码深度剖析Java8实战视频-24自定义Collector,结合Stream的使用详细介绍Java8实战视频-25Parallel Stream编程体验,充分利用多核机器加快计算速度Java8实战视频-26Fork Join框架实例深入讲解Java8实战视频-27Spliterator接口源码剖析以及自定义Spliterator实现一个Stream.wmvJava8实战视频-28Default方法的介绍和简单的例子Java8实战视频-29Default方法解决多重继承冲突的三大原则详细介绍Java8实战视频-30多线程Future设计模式原理详细介绍,并且实现一个Future程序Java8实战视频-31JDK自带Future,Callable,ExecutorService介绍Java8实战视频-32实现一个异步基于事件回调的Future程序.wmvJava8实战视频-33CompletableFuture用法入门介绍Java8实战视频-34CompletableFuture之supplyAsync详细介绍Java8实战视频-35CompletableFuture流水线工作,join多个异步任务详细讲解Java8实战视频-36CompletableFuture常用API的重点详解-上Java8实战视频-37CompletableFuture常用API的重点详解-下Java8实战视频-38JDK老DateAPI存在的问题,新的DateAPI之LocalDate用法及其介绍.wmvJava8实战视频-39New Date API之LocalTime,LocalDateTime,Instant,Duration,Period详细介绍Java8实战视频-40New Date API之format和parse介绍

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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