设置自己的日期或调用新日期()时,使用日期格式打印日期是不同的



我试图使用SimpleDateFormat打印两个日期,但对于我的自定义日期,输出看起来完全不同。

  DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date date2 =dateFormat.parse("01/01/2014 10:45:01");
    System.out.println(("date2:"+date2));
    Date date = new Date();
    System.out.println(dateFormat.format(date)); // how it prints this  is the desired outcome

输出:

date2:Wed Jan 01 10:45:01 GMT 2014
11/04/2014 10:45:50 

输出正确。您通过使用DateFormat解析字符串中的日期来创建date2。但是,当打印date2时,并不是用dateFormat.format()打印,因此日期将以默认格式打印。

尝试System.out.println("date2:"+dateFormat.format(date2));

format()将以所需格式返回日期字符串。

Date Object ---------->SDF Fomatter------>Formatted date in String

parse()接受字符串格式(自定义格式)的日期并返回日期对象

Formatted String date ------>SDF parse----->Date object

想要检查,打印它的值:

dateFormat.format(dateFormat.parse("01/01/2014 10:45:01"));

您已经使用日期格式对其进行了解析,但您需要对其进行格式化以获得所需的输出。

System.out.println(("date2:"+dateFormat.format(date2));

您尝试过dateFormat.parse("dd/MM/yyyy HH:MM:ss")吗?

System.out.println(("date2:"+date2));

date2参数隐式调用toString()方法。由于Date已经覆盖了它从Object继承的toString()方法,因此正是该方法规定了输出的格式。Date#toString()的Javadoc声明:

将此Date对象转换为以下形式的Stringdow mon dd hh:mm:ss zzz yyyy

这与您在输出中看到的内容相匹配。为了获得预期的输出,您需要执行以下操作:

System.out.println(("date2:" + dateFormat.format(date2)));

Date对象没有与其关联的格式。它们是一个愚蠢的对象,不需要知道任何显示格式的详细信息,因为它们与日期本身无关。

相关内容

  • 没有找到相关文章