Java - 将字符串转换为ISO 8601日期格式错误Joda-Time

MCh*_*han 0 java jodatime

我正在尝试使用Joda-Time将我的应用程序用户输入的日期转换为ISO 8601格式,所以我使用以下代码但是我收到错误:

String oldDate = "05/05/2013";
DateTime oldD = DateTime.parse(oldDate);
DateTimeFormatter OldDFmt = ISODateTimeFormat.dateTime();
String str = OldDFmt.print(oldD);
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误:

org.springframework.web.util.NestedServletException:请求处理失败; 嵌套异常是java.lang.IllegalArgumentException:格式无效:"05/05/2013"​​格式错误为"/ 05/2013"

有人可以帮忙告诉我这里做错了什么吗?谢谢.

Sot*_*lis 5

有人可以帮忙告诉我这里做错了什么吗?

这里发生错误.

DateTime oldD = DateTime.parse(oldDate);
Run Code Online (Sandbox Code Playgroud)

DateTime.parse(String)方法String使用a 解析您的参数ISODateTimeFormat.dateTimeParser().

格式必须是形式

 datetime          = time | date-opt-time
 time              = 'T' time-element [offset]
 date-opt-time     = date-element ['T' [time-element] [offset]]
 date-element      = std-date-element | ord-date-element | week-date-element
 std-date-element  = yyyy ['-' MM ['-' dd]]
 ord-date-element  = yyyy ['-' DDD]
 week-date-element = xxxx '-W' ww ['-' e]
 time-element      = HH [minute-element] | [fraction]
 minute-element    = ':' mm [second-element] | [fraction]
 second-element    = ':' ss [fraction]
 fraction          = ('.' | ',') digit+
 offset            = 'Z' | (('+' | '-') HH [':' mm [':' ss [('.' | ',') SSS]]])
Run Code Online (Sandbox Code Playgroud)

你的

String oldDate = "05/05/2013";
Run Code Online (Sandbox Code Playgroud)

不是.

您需要String使用具有相应格式的解析器来解析您的日期,就像Paul Hicks所建议的那样.然后,您可以将创建的格式设置DateTime为ISO标准格式.