DateTimeFormatter与JODA无法正常工作

时间:2013-06-13 13:19:31

标签: java date jodatime

我遇到了为DateTime获取正确格式的麻烦。我期待格式dd / MM / yyyy HH:mm:ss而我变得过于冗长。例如:

        DateTime dt;
        String timeStamp = day + "/" + month + "/" + year + " " + hour + ":" + minute + ":00"; 
        DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
        dt = formatter.parseDateTime(timeStamp);

我得到的结论是:

2013-06-13T00:15:00.000+02:00

因此,为什么格式化程序没有按预期格式化?有线索吗?

谢谢! 亚历

4 个答案:

答案 0 :(得分:1)

您只使用格式化程序进行解析,而不是格式化。如果你也用它来格式化,例如使用print()方法,您会看到您期望的字符串。

此外,您似乎正在解析字符串并立即将其替换为当前日期时间。我会删除你的最后一行或它之前的所有行。

答案 1 :(得分:0)

您告诉格式化程序如何阅读手工制作的timeStamp字符串。您没有告诉系统如何输出生成的DateTime对象。

正如Daniel Arndt在下面指出的那样,你这样做:

System.out.println(dt.toString(formatter));

了解DateTime对象没有格式。格式是将字符串转换为DateTime对象,将DateTime对象转换为字符串。您在屏幕上看到的内容始终是字符串。因此,如果您执行DateTime对象的输出,如上所述,您还需要告诉系统如何格式化它。如果不这样做,它将使用系统特定的默认格式,即获得2013-06-13T00:15:00.000+02:00字符串时发生的情况。

长话短说:您的DateTime对象包含正确的数据。如果你提供了正确的格式,当你输出它时,它看起来就像你期望的那样。

答案 2 :(得分:0)

该行

dt = new DateTime();

替换您之前提出的所有努力。所以请将其删除并打印dt

答案 3 :(得分:0)

您需要使用格式化程序打印日期。如果您在dt = new DateTime();行之前进行预编码,则以下代码应该有效:

System.out.println(dt.toString(formatter));