数据库表中是一个数据时long类型 ,在页面中显示要转换成date 类型 即 yyyy-MM-dd ,怎么转换呢?

解决方案 »

  1.   

    new SimpleDateFormat("yyyy-MM-dd").format(new Date(long));
      

  2.   

    从数据库取出来之后,像下面这样处理,resultSet是记录集.//想要得到完整的数据,包括日期和时间,可以这样 java.util.Date d = resultSet.getTimestamp(1); //这样处理更合适一些,可以避免一些潜在Timestamp 问题 java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime()); 
      

  3.   


    resultSet.getTimestamp(1).getTime());  中的值本来就是一个long, 经过这么一折腾,getTime() 不还是long型么?
    而且我试过用 java.util.Date d = new java.util.Date() 了 不过 结果去成了1970年...
    我现在用的jdk 1.4.2 可能是jdk的原因吧~~
      

  4.   

    按照二楼兄弟说的去弄
    An error occurred at line: 46 in the jsp file: /foruminfo.jsp
    resultSet cannot be resolved
    43:    </td>
    44:    <td height=10 align="right" valign="bottom" class="gray-dashed">&nbsp;
    45:  <font style="font-size:12px;color:#353535">
    46:  <% Date d = new Date(resultSet.getTimestamp("dateline").getTime()) ;%>
    47:     [<%= d %>
    48:  </font>]
    49:    </td>
    Stacktrace:
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    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.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.Http11AprProcessor.process(Http11AprProcessor.java:859)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    at java.lang.Thread.run(Thread.java:619)
      

  5.   

    话说圆的周长公式C=2πR,lz就是始终不理解为什么公式里面会有个字母R,而不是1米,2米,3厘米这样数字的人
      

  6.   

    不好意思 。失误 没有把ResultSet改成 rs, 可是这样出来的结果居然是 201X 年,与实际不符啊
      

  7.   

    你这个long是怎么得来的,就怎么反向变回去。你总不会随便写个long值塞进去吧?
    另外取时间,用java.sql.Date和java.sql.Timestamp,不是util包里面的。
    默认的long在数据库中以s为单位,java中得到的貌似是ms.
      

  8.   

    这个数据所在的是 discuz中的 的 cdb_posts的 dateline ,怎么放进去的不太清楚
      

  9.   

    什么数据库的 long 类型?在 MySQL 和 Oracle 中 long 类型都是文本类型,不是数字类型!
    在 SQL Server 中根本就没有这一类型!
      

  10.   

    数据库最好是用varchar型的存放时间,显示、转换都方便,什么都能做
      

  11.   


    本来开始我这也是直接一个varchar,可后来说,用pl/sql developer不能方便的排序改时间。。把varchar改回date。哎,各有各公司的要求啊
      

  12.   


    他大概说的是BIGINT 或者NUMBER那类的东西吧..
      

  13.   

    cdb_posts 中的 dateline 是标准的 unix 时间戳,是以秒为单位的.
    而 java 中是以毫秒为单位的
    注意这一点,就可以正确转换了.摘自:http://www.discuz.net/viewthread.php?tid=658595
      

  14.   

    不行,你看 都成这样了 Sun Apr 05 12:00:00 CST 50009 
      

  15.   

    看来是oracle了,oracle的时间操作还是蛮方便的,需要注意的是,oracle的有效时间从1970年1月1日零时开始计算秒数。所以你的long数值转进之后,需要减去1970年1月1日零时对应的秒数才可以得到正确的offset秒数。
      

  16.   

    你把其中一条数据的long帖出来
      

  17.   

    这样,你把你的long,和你认为它大概的时间贴出来
      

  18.   

    恩 是int型, dateline     int(10) unsigned
      

  19.   

    那我再顺便问一下 这个dateline 是不是帖子的创建时间呢?
      

  20.   

    ls说的对的啊,都是直接*1000,放到date里面去就可以了啊
      

  21.   

    public static void main(String arg[]){
    Date test = new Date(1272019114 * 1000);
    System.out.println(test);
    }这样的结果是 Fri Jan 09 12:53:14 CST 1970
      

  22.   

    自己加一个转换方法:
    public static String getDateTime(Date date, String pattern) {
         SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
         return dateFormat.format(date);
    }然后获取的时候就这样调用一下:
    while(rs.next()) {
     String dateStr = getDateTime(new Date(rs.getLong("结果集的那个字段名称")),"YYYY-MM-DD");
     ......
    }
    此时得到的dateStr的格式就是YYYY-MM-DD,上面的静态方法建议放到UTIL类里面去,还有就是可能会出现空值异常自己根据实际情况转一下。
      

  23.   

    真是崩溃,Date这么重要的类。
    29楼思路是对的,不过格式错了,要求是"yyyy-MM-dd",另外加个非空判断比较好。
      

  24.   

    想想看,下面的代码肯定有问题,Date的开始时间基于1970-01-01 00:00:00.000的毫秒数,1272019114000毫秒后,怎么可能还是在1970年!!!
    Date test = new Date(1272019114 * 1000);
    System.out.println(test);
    改成
    Date test = new Date(1272019114000L);
    System.out.println(test);
    再试试看,具体原因自己想或查
      

  25.   

    不错 public static void main(String arg[]){
    //Date test = new Date(1272019114L * 1000);
    SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
    String test = date.format(new Date(1272019114L * 1000));
    System.out.println(test);
    }这次的结果就是我想要的了
    2010-04-23