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应该是正确的,但为什么它不输出预期的格式?
答案 0 :(得分:4)
您必须使用SimpleDateFormat来创建输出,如
System.out.println(sdff.format(start)+"..."+sdff.format(end));
答案 1 :(得分:3)
班级SimpleDateFormat
的作用是根据您的规范在班级String
和Date
之间进行转换。但是生成的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()