无法在java中更正格式化日期

时间:2015-08-26 13:38:11

标签: java date

        SimpleDateFormat sdff = new SimpleDateFormat("MM/dd/yyyy");
        Date start = sdff.parse("10/10/2009");
        Date end = sdff.parse("10/10/2009");
        System.out.println(start+"..."+end);

输出

Sat Oct 10 00:00:00 EDT 2009...Sat Oct 10 00:00:00 EDT 2009

而不是10/10/2009 为什么会这样? MM是月份,dd和yyyy应该是正确的,但为什么它不输出预期的格式?

5 个答案:

答案 0 :(得分:4)

您必须使用SimpleDateFormat来创建输出,如

System.out.println(sdff.format(start)+"..."+sdff.format(end));

答案 1 :(得分:3)

班级SimpleDateFormat的作用是根据您的规范在班级StringDate之间进行转换。但是生成的Date对象并不知道它创建的SimpleDateFormat。它以日期内部格式存储日期。将日期传递给println时,它将以默认日期格式显示。

如果您还希望使用自定义SimpleDateFormat来格式化输出,则需要再次使用它将Date转换为字符串:

System.out.println(sdff.format(start) + "..." + sdff.format(end));

答案 2 :(得分:2)

您必须在打印时格式化:

System.out.println(sdff.format(start)+"..."+sdff.format(end));

答案 3 :(得分:1)

System.out.println(start+"..."+end);的输出是使用类toString的{​​{1}}方法完成的。

如果您需要在Date表单中获取字符串,只需将MM/dd/yyyy(您的sdff)方法应用于format实例。

Date

答案 4 :(得分:0)

已经发布了正确的答案,但是FWIW,这是另一个:

SimpleDateFormat有一个parse(String s)方法,用于将String转换为Date

SimpleDateFormat还有一个格式(Date d)方法,用于将Date转换为String。

但是你只使用了parse方法,你没有使用format方法输出日期,因此它们是以默认方式输出的,使用Date.toString()