使用dateformat时的打印日期在设置自己的日期或调用新的Date()时有所不同

时间:2014-04-11 09:53:20

标签: java datetime

我正在尝试使用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 

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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"));

答案 2 :(得分:0)

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

的System.out.println(( “日期2:” + dateFormat.format(DATE2)));

答案 3 :(得分:0)

您是否尝试过dateFormat.parse(“dd / MM / yyyy HH:mm:ss”); ?

答案 4 :(得分:0)

该行

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

隐式调用toString()参数上的date2方法。由于Date已覆盖从toString()继承的Object方法,因此该方法指示输出的格式。 Date#toString()状态的Javadoc:

  

将此Date对象转换为表单的String:   dow mon dd hh:mm:ss zzz yyyy

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

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

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