一个很简单的问题,但是我不会,请各位大虾不吝赐教!!!!
Date date = new Date();
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String lrsj = "2006-03-15 20:04:42"
date = dateformat.parse(lrsj);输出结果:Wed Mar 15 20:04:42 CST 2006而我想转换完仍然是2006-03-15 20:04:42这样。
请问各位大虾怎么处理??另外本人分不多……

解决方案 »

  1.   

    日期就是日期,你所说的格式都是以字符串形式显示出来的。dateformat.format(date);
      

  2.   

    试试这个吧,应该可以用
    public static final Date controlTime(String dateString) {
            String s1 = dateString.substring(0, 4);
            String s2 = "";
            String s3 = "";
            String s4 = dateString.substring(5);
            int i = s4.indexOf("-");
            if (i == 1) {
                s2 = s4.substring(0, 1);
                s3 = s4.substring(2);
            } else {
                s2 = s4.substring(0, 2);
                s3 = s4.substring(3, 5);
            }
            cal.set((new Integer(s1)).intValue(), (new Integer(s2)).intValue() - 1, (new Integer(s3)).intValue(),0,0,0);        Date date = cal.getTime();
            return date;
        }
      

  3.   

    是这样的,我可以不用定义那个lrsj,因为我是直接从查询的的数据中取数据,然后再赋值就是
    rs = stmt.executeQuery(sql);
    while(rs.next()){
      wh.setLrsj(rs.getTimestamp(lrsj));
    }然后输出结果是:2006-03-15 20:04:42.0
    而我想要的是:2006-03-15 20:04:42
    怎么可以把后面的那个多余的去掉或者是用我发帖子的那种转换的方法,反正我现在是要赋值,不是要让他直接显示。就是需要2006-03-15 20:04:42这种格式的日期类型!!!!!!!!
      

  4.   

    只是显示的格式不同而已,两者的值既然相同,而且不需要显示,那为什么还要追求格式呢?
    需要输出时再通过format转换一下就可以了
      

  5.   

    如果一定要坚持这么做,可以写一个类继承Date,然后覆盖它的toString()方法,
    在里面使用format格式化成需要的类型
    但是感觉上没有什么实际的意义
      

  6.   

    2006-03-15 20:04:42.0 , 用.做分割符,去掉呗.
    自己能实现的,就不要用api了,用api未必更容易.
      

  7.   

    不是我坚持要怎么样,是需求,必须得把那个东西转换成一样的格式。有两种方法,一种是先得到一个str变量,把它转换成date型后再赋给wh.setLrsj()另外一种就是用wh.setLrsj(rs.getTimestamp(lrsj));但是两种方法得到的结果都有问题,第一种方法结果是:Wed Mar 15 20:04:42 CST 2006
    第二种方法结果是:2006-03-15 20:04:42.0我的问题就是怎么把结果转换成我想要的!!!!!!!!!!!而不是讨论转换他有什么用,如果转换没有意义的话,我还用在这里发个帖子请教吗!!
      

  8.   

    Date date = new Date();
       SimpleDateFormat dateformat = new SimpleDateFormat("yyyy年MM月dd日");
       dateformat.format(date);
       System.out.println(date);
    System.out.println(dateformat.format(date));
      

  9.   

    首先非常感谢各位的答复!!!但是请各位看好我的问题。不是把date转换成string如果要用第一种方法的话,就是把string转换date,但问题是结果怎么变成我想要的结果!!
      

  10.   

    你还是不明白,在Java里面Date就是Date,它不存在格式,它只表示一个时间点!你说的有没有.0仅在它被转换成String时候存在,它不是Date本身的任何属性
    所以你唯一的做法就是在输出的时候使用SimpleDateFormat.format(mydate)来达到你需要的格式。同样double 也是类似的,它根本没有格式!它仅仅是一个浮点数!
      

  11.   


    note:
    the difference between java.util.date and java.sql.date
      

  12.   

    Date date = new Date();
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    while(rs.next()){
    TbSbglTzglSbtz wh = new TbSbglTzglSbtz();
    wh.setTzlxid(new Long(rs.getInt(1)));
    String lrsj = rs.getString(2).substring(0, 19);
    date = dateformat.parse(lrsj);
    wh.setLrsj(date);
    list.add(wh);
    }
    这是DAO,取到数据后存到list里,然后再把list转换成对象数组类型,再然后就在jsp拿到数据,最后把数据显示出来,但是显示出来的是:Wed Mar 15 20:04:42 CST 2006“所以你唯一的做法就是在输出的时候使用SimpleDateFormat.format(mydate)来达到你需要的格式。”
    那我怎么能用format方法把它转换成string型再输出!?
      

  13.   

    用java.util.GregorianCalendar类先设置时间,然后再输出日期型,最后在转换,可以解决但是麻烦点了!
      

  14.   

    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    for(int i = 0; i < list.size(); i++)
      System.out.println(dateformat.formate(list.get(i)));
      

  15.   

    oracle:insert into table(index) values to_date('2004-03-04 11:11:11.00','YYYY-MM-DD HH24:MI:SS')
      

  16.   

    我不明白你到底怎么使用。如果你要在JSP中显示,则你必须在JSP中使用SimpleDateFormat.formate(date)
    至于你的数据对象DAO、Action中的处理,还是应该使用java.util.Date或者java.sql.Timestamp类型。
      

  17.   

    你在JSP中调用date = dao.getDate()仍然是返回java.util.Date或者java.sql.Timestamp但是这个时候你打算输出到页面的话,就调用SimpleDateFormat.formate(date);你根据这个date还可以进行你需要的操作
      

  18.   

    不知道 lz的“TbSbglTzglSbtz”是不是自己定义的,如果可以改动的话,何必这么难为自己呢?把 Lrsj的类型改一下不可以么?
      

  19.   

    其实我觉得你的代码非常奇怪,我想知道你数据库中是以什么存储的?竟然不是DateTime类型吗?另外wh.setLrsj(date);应该还是以保持目前的Date类型比较好,不应该使用String以减少后来可能出现的问题。你仅仅需要在JSP输出这个wh.getLrsj()的时候改成SimpleDateFormat.formate(wh.getLrsj())
      

  20.   

    我数据库存的就是Date类型。我确实不想把它先转换成str再转回来,我这样做只是把2006-03-15 20:04:42.0多出来的一位去掉而已。而且我确实也是用SimpleDateFormat.formate(wh.getLrsj())转换成str型了,但是我得把它存到对象里边,然后再存到list里吧!?因为我在jsp里边要拿到“这些”数据。
    也就是
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    TbSbglTzglSbtz sbtz = new TbSbglTzglSbtz();
    List list = new ArrayList();
    for(int i = 0; i < sb.length; i++){
    String lrsj = dateformat.format(sb[i].getLrsj());
    sbtz.setLrsj(lrsj);
    list.add(lrsj);
    }
    String[] str = (String[])list.toArray(new String[0]);
    request.setAttribute("str", str);但是sbtz.setLrsj(lrsj);里边的变量必须是Date类型的,所以我还得把它转换过来……忘了说了,我用了Hibernate,TbSbglTzglSbtz 是一个对象
      

  21.   

    问题解决了,呵呵,谢谢各位了,由于没有多少分,就只给ChDw(米) 50分了,其他的兄弟情见谅!!
      

  22.   

    你这种解决了问题不写在这里的习惯很不好,自己解决了要写下来放在这里,等后来遇到这个问题的后辈来学习,这样也算是你对中华人民共和国软件人才做出的一份贡献。我也遇到过类似问题,用的是oracle,create_date存的是date类型,(form定义的是string)取出来总是有个尾巴( .0 ) ,后来头告诉我说应该这样取的 : select to_char(create_date, 'yyyy-MM-dd HH24:mi:ss') from ... 当然后面的输出格式('yyyy-MM-dd HH24:mi:ss')还有其它格式.顺便告诉你最后一个问题,之所以你不能给他50分,是因为这个帖在你创建的时候只给了20分的奖励,请看问题点数一项.