我正在尝试使用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
答案 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
个对象没有与之关联的格式。它们是一个愚蠢的对象,不需要知道任何显示格式的细节,因为它们与日期本身无关。