Joda Time IllegalArgumentException

时间:2016-03-11 10:40:17

标签: java jodatime

我使用Joda Time Framework。在我的功能中,我这样做:

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

我有这个错误:

  

java.lang.IllegalArgumentException:格式无效:   “2016-03-11T11:38:22.666 + 01:00”格言不正确   “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:格式无效:“Fri Mar 11   2016年12月9日12:09:36“

2 个答案:

答案 0 :(得分:1)

如果要解析它,您的字符串应采用相同的格式。现在,您正在创建过时的字符串,该格式为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));

答案 1 :(得分:1)

你应该试试这个:

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