一个函数,接受一个String类型的日期参数,转换为Date类型,代码如下:protected Date Transform(String str){
Date d = null;
System.out.println("转换函数接收到:"+str);
try {
d = DateFormat.getDateInstance().parse(str);
                           System.out.println("转换函数输出:"+d);

} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return d;
}
后台输出日志如下:转换函数接收到:2008-01-16
转换函数输出:Wed Jan 16 00:00:00 CST 2008怎么会这样呢,这样看来接收到的日期反而被转换成其他的了,请大家知道一下,是哪里的问题?

解决方案 »

  1.   

    DateFormat.getDateInstance().parse(str) 返回的是个 Date类型
      

  2.   

    你不是要转换为Date类型么?还是说是同样写法的Date类型?
      

  3.   

    对啊,我要的就是date类型的,你看到我函数的返回类型了把,说明我要的就是date类型的,但是Wed Jan 16 00:00:00 CST 2008就不对了,
    我用DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    d=formatter.parse(str);
    这样的方法都得不到我想要的格式,不应该啊
      

  4.   

    对啊,我要的就是date类型。
    简单一些给你说吧,我传入的参数是2011-12-12,我想要输出的仍然是2011-12-12,唯一不同的就是传入的是string 类型,而转换后返回的是date类型,不要Mon Dec 12 00:00:00 CST 2011
      

  5.   

    问题解决,写为d=java.sql.Date.valueOf(str);后解决问题!!!
      

  6.   

    DateFormat.getDateInstance().parse(str) 就是这个不要看结果啊
      

  7.   


    楼主,你做日期解析的习惯不太好,建议用这种:DateFormat df = new SimpleDateFormat("yyyy-MM-DD");
    Date day = df.parse("2008-01-16"); // 按你设计的日期格式进行解析
    System.out.println(df.format(day)); // 按你期望的日期格式进行输入规范化你的日期模型,否则你期望的结果随时会根据运行环境(包括操作系统环境)而发生变化。