我遇到了为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
因此,为什么格式化程序没有按预期格式化?有线索吗?
谢谢! 亚历
答案 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));