我有一个Date对象,如下所示:
java.util.Date d = new java.util.Date(System.currentTimeMillis()); // Mon Dec 23 14:57:28 PST 2013
我需要格式化日期以获取具有此格式的另一个Date对象: 2013-12-23 14:57:28
我试过这段代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
sdf.format(d); // d is still Mon Dec 23 14:57:28 PST 2013, no formatting.
我试过这段代码:
String s = d.toString();
try {
d = sdf.parse(s);
} catch (Exception e)
e.printStackTrace(); // java.text.ParseException: Unparseable date: "Mon Dec 23 14:35:48 PST 2013"
请你告诉我我做错了什么?我用谷歌搜索它,但格式化日期的解决方案或多或少是我尝试过的。非常感谢任何帮助。
答案 0 :(得分:3)
您不了解日期是什么以及format()
做了什么。日期只是几毫秒。而已。它没有任何格式。格式化日期根本不会更改日期。它返回一个字符串,其中包含人类可读的日期表示(例如" 2012-11-23"或"星期一,4月2日和#34;)。
所以,以下说明:
sdf.format(d);
实际上是一个noop。您忽略它返回的字符串。
如果你想要的是在调用date.toString()
时使用特定的格式,那就不可能了。如果要以特定格式显示日期(例如yyyy-MM-dd
),而不是
System.out.println(date);
使用
DateFormat format = new SimpleDaeFormat("yyyy-MM-dd");
System.out.println(format.format(date));
所有这些都在javadoc中得到了清楚的解释。你应该阅读它。
答案 1 :(得分:0)
SimpleDateFormat,不会更改日期格式,它只为显示目的提供格式化日期,而不是其他任何内容。
util.Date将始终具有一种格式(很长的毫秒数),您可以使用SimpleDateFormat以任何方式格式化。所以无论你得到什么日期,你都可以格式化为你想要的格式。
如果你解释为什么要尝试做你想做的事情,那么也许我们可以更好地支持你。