Joda 时间 IllegalArgumentException

Joda Time IllegalArgumentException

我使用 Joda 时间框架。在我的函数中我这样做:

...
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(DateTime.now().toString());
...

我有这个错误:

java.lang.IllegalArgumentException: Invalid format: "2016-03-11T11:38:22.666+01:00" is malformed at "16-03-11T11:38:22.666+01:00"

怎么了..?

更新:

我使用@user2004685 代码:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime newTime = formatter.parseDateTime(new Date().toString());
Date startDate =  newTime.toDate();
newTime = formatter.parseDateTime(DateTime.now().plusMonths(6).toString());
Date endDate = newTime.toDate();

我有这个新错误:

java.lang.IllegalArgumentException: Invalid format: "Fri Mar 11 12:09:36 CET 2016"

如果你想解析它,你的字符串应该是相同的格式。现在,您正在创建 EEE MMM dd HH:mm:ss zzzz yyyy 格式的过时字符串,但您使用的是不同的格式,即 dd/MM/yyyy HH:mm:ss

这是代码片段:

DateTimeFormatter out = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zzzz yyyy");
DateTime newTime = out.parseDateTime(new Date().toString());

如果您想将此日期转换为 dd/MM/yyyy HH:mm:ss 格式,那么您可以进一步执行以下操作:

DateTimeFormatter in = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
System.out.println(in.print(newTime));

你应该试试这个:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");