我想得到得到的结果:2008-03-20 13:30:00Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");temp = Timestamp.valueOf(sdf.format(temp));//这个得出的结果还是:2008-03-20 13:30:00.0temp = Timestamp.valueOf((temp.toString()).substring(0, 19));//这个得出的结果还是:2008-03-20 13:30:00.0如果我再想得到的结果为:2008-03-20 13:30  
也应该怎么处理呢?
 觉得Timestamp 和 Date 就是有很大的差别!

解决方案 »

  1.   

    Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得 java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String st=sdf.format(temp);//这个得出的结果还是:2008-03-20 13:30:00这个格式化后应该得到了2008-03-20 13:30:00 
      

  2.   

    Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得
    上面这句不会报错?
    没听说过这种隐式转换啊。
      

  3.   

    基本差不多,都是时间格式呗,你可以从sql中动动手脚直接得到你想要的格式。
      

  4.   

    Timestamp temp = "2008-03-20 13:30:00.0"; //该值从数据库中获得 
    这个应该是数据库取出来的吧。不是string吧。
      

  5.   

    以下代码输出结果为2008-03-20 13:30
    import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    public class TimeTest
    {
        public static void main(String[] args)
        {
            String s = "2008-03-20 13:30:00.0";
            Timestamp ts = Timestamp.valueOf(s);
            Calendar c = Calendar.getInstance();
            c.setTime(ts);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd    hh:mm");
            System.out.println(sdf.format(c.getTime()));
        }
    }
      

  6.   

    楼主说的现象主要是由于valueOf()就是将里面的字符串,转换为Timestamp 类型,而valueOf里面的字符串是有严格的格式定义的(格式为yyyy-mm-dd hh:mm:ss[.f...] 格式的时间戳。可以省略小数秒),而你的SimpleDateFormat 将格式定义为yyyy-MM-dd HH:mm:ss符合要求,所以输出的结果就自动按照Timestamp 所要求的格式输出了 就是楼主说的2008-03-20 13:30:00.0
    个人感觉要是将时间戳的时间进行格式化,最好将其转换为Date或者Calendar类型。Timestamp 的精度要高一些,防止数据库数据脏读现象
      

  7.   

    另外补充一下,楼主想要将格式化好了的字符串再转化为Timestamp再回传给数据库吧?我个人认为如果你格式化的字符串不符合yyyy-mm-dd hh:mm:ss[.f...] 这个要求,那么该字符串是不能被转化为Timestamp 的。同理要想将该字符串转换为Date 那么精度只能到日,小时以后都没有。所以要是非要改时间格式,还是在sql改吧。