我的数据是时间是 bigInter 类型  
javaBean 是Long 类型 Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, -7); Long start = c.getTime().getTime(); Date date = new Date();
Long end = date.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");

// 获取start end 时间
                 
               //获取一个String 类型值 "2008-08-11"
String start_date = request.getParameter("start_date");
String end_date = request.getParameter("end_date");
                   //start date 是java.util.date类型
                  //查询结果是java.sql.date 类型 start_date  end_date 
         
                 Long s1 = (start_date == null ? start : ??
Long s2 = (end_date == null ? end : ???如何转换 java.sql.date 结果转换成 long 类型 

解决方案 »

  1.   

    选择日期的是一个java.sql类型  然后传过来  
     怎么弄啊 小弟都头大了
      

  2.   

    不明白你问什么大概是你可以所String 的end_date 转换成date ,然后通过date再转换为longString 转换成date 就要写一段代码了
      

  3.   

    查询出来就的String 类型值 是一断js选择日期  他是个java.sql的方法保存的形式我转换  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
                     Date date2=sdf.parse(end_date);
           java.sql.Date sqlDate = new java.sql.Date(date2.getTime());
        Long  s1 = sqlDate.getTime();
    老是出错  郁闷
      

  4.   


    String str="2006-11-1";
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    try {
    java.util.Date uDate=sdf.parse(str);
    java.sql.Date sqlDate=new Date(uDate.getTime());
    System.out.println(sqlDate.toString());
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }sdf.parse的时候有个异常是要捕获的,然后就是你end_date的格式要和你format里面的格式"yyyy-MM-dd"的格式要一直 不然就会报转换异常。
    good luck
      

  5.   

    SimpleDateFormat 就是做这个的
      

  6.   

    我给thorws了  应该不是这个问题
      

  7.   

    String str="2006-11-1";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); 
    这两个格式要正确,也就是如果你的format格式是yyyy/MM/dd
    那么转换的时候就会报异常
    但是如果你是yyyy-MM-dd,也就是和你的页面传过来的字符串的格式一致 比如说上面的str
    就不会报异常 放个断点,看你传过来的end_data的格式是不是和你format里面的一致或者你报错报的是什么错,贴出来大家看看
      

  8.   

    严重: Servlet.service() for servlet action threw exception
    java.text.ParseException: Unparseable date: "2008-08-01"
    at java.text.DateFormat.parse(DateFormat.java:337)
    at com.happygo.manager.web.struts.action.User_account_manageAction.list(User_account_manageAction.java:108)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
    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 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.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    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:228)
    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:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:619)传过来格式正确 的
      

  9.   


    public static void main(String[] args) {
    String str="2008-08-01";
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    try {
    java.util.Date uDate=sdf.parse(str);
    java.sql.Date sqlDate=new Date(uDate.getTime());
    System.out.println(sqlDate.getTime());

    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }这就奇怪了,我用你上面的时间测试过,没问题的啊
      

  10.   

    public ActionForward list(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws ParseException {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_MONTH, -7); Long start = c.getTime().getTime(); Date date = new Date();
    Long end = date.getTime(); // 获取start end 时间 String start_date = request.getParameter("start_date");
    String end_date = request.getParameter("end_date"); Long s1 = null;
    if (start_date == null) {
    s1 = start;
    } else { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); Date date3 = sdf.parse(start_date); java.sql.Date sqlDate = new java.sql.Date(date3.getTime()); s1 = sqlDate.getTime();
    }
    Long s2 = null;
    if (end_date == null) {
    s2 = end;
    } else {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); Date date2 = sdf.parse(end_date); java.sql.Date sqlDate = new java.sql.Date(date2.getTime()); s2 = sqlDate.getTime();
    } // date 类型转换lang类型 // 获取金额 充值总额 0 ,1 提现总额
    // 充值总额
    BigDecimal voucher_amount = this.userAccountService.search(s1, s2,
    (Byte) (byte) 0);
    request.setAttribute("userAmonut", voucher_amount);
    // 提取总额
    BigDecimal to_cash_amount = this.userAccountService.search(s1, s2,
    (Byte) (byte) 1);
    request.setAttribute("toCash", to_cash_amount);
    // 用户金额情况
    List list = this.accountLogService.search(s1, s2); for (int i = 0; i < list.size(); i++) {
    Object[] userMoneys = (Object[]) list.get(i);
    BigDecimal user_money = (BigDecimal) userMoneys[0]; // 用户可用余额
    BigDecimal frozen_money = (BigDecimal) userMoneys[1];// 用户冻结金额
    request.setAttribute("userMoney", user_money);
    request.setAttribute("frozeMoney", frozen_money);
    }
    // 交易 金额和积分使用金额
    List orderList = this.orderInfoService.search(s1, s2);
    for (int i = 0; i < orderList.size(); i++) {
    Object[] userMoneys = (Object[]) list.get(i);
    BigDecimal surplus = (BigDecimal) userMoneys[0]; // 交易使用余额
    BigDecimal integral_money = (BigDecimal) userMoneys[1]; // 积分使用余额
    request.setAttribute("sur", surplus);
    request.setAttribute("inte", integral_money);
    }
    request.setAttribute("start", start);
    request.setAttribute("end", end);
    return mapping.findForward("toList");
    }
      

  11.   

    因为你这里用到了两种date
    所以建议你写代码的时候 创建的时候要把包名家上才能区分到底是哪种date
    像这种
    Date date = new Date();
    Date date3 = sdf.parse(start_date);
    根本就不知道是哪种date。
      

  12.   

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); 
    看看你的这个format里面的字符串 多了一个空格
    去掉
      

  13.   

    都改过来 了  还是报那个错误  2009-11-3 10:15:57 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.text.ParseException: Unparseable date: "2009-11-09"郁闷死了
      

  14.   

    你的页面两个地方的format字符串都要改啊
    你肯定是只改了一个地方
    我测过你的代码 没问题的public static void main(String[] args)throws ParseException  {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_MONTH, -7); Long start = c.getTime().getTime(); java.util.Date date = new java.util.Date();
    Long end = date.getTime(); // 获取start end 时间 String start_date = "2008-10-08";
    String end_date ="2008-10-09"; Long s1 = null;
    if (start_date == null) {
    s1 = start;
    } else { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date3 = sdf.parse(start_date); java.sql.Date sqlDate = new java.sql.Date(date3.getTime()); s1 = sqlDate.getTime();
    }
    Long s2 = null;
    if (end_date == null) {
    s2 = end;
    } else {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date2 = sdf.parse(end_date); java.sql.Date sqlDate = new java.sql.Date(date2.getTime()); s2 = sqlDate.getTime();
    }
    System.out.println("s1:="+s1);
    System.out.println("s2:="+s2); }
      

  15.   

    OK了 谢谢了  哎~ 郁闷 
    不过还有一个问题哈~ 我的数据库保存的是 1242140736  是2008-08-01
    但是我页面选择js以后转换以后就不long的值就不不是这个了 
      

  16.   

    你是说你的数据库里面的值和你页面上选择的时间转成的long值不对应?
    但是你插入数据库的时候是从页面读的long插入的 应该不会不同吧没碰到过这种问题
      

  17.   

    BigInteger保存的时间   是不是保存的格式 和位数有点不同吗
      

  18.   

    不用simpledateformat   直接用java.sql.Date 的valueOf(s) string 的格式为 yyyy-mm-dd 就可以转换成date类型的
      

  19.   

    你想两个Long值吧。
    你已差不多了,最后赋值时改一下啊Long s1 = (start_date == null ? start : java.sql.Date(start_date).getTime());
    Long s2 = (end_date == null ? end : java.sql.Date(end_date).getTime());