无法使java.text.SimpleDateFormat工作

时间:2013-12-23 23:14:52

标签: java simpledateformat

我有一个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"

请你告诉我我做错了什么?我用谷歌搜索它,但格式化日期的解决方案或多或少是我尝试过的。非常感谢任何帮助。

2 个答案:

答案 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以任何方式格式化。所以无论你得到什么日期,你都可以格式化为你想要的格式。

如果你解释为什么要尝试做你想做的事情,那么也许我们可以更好地支持你。