我正在尝试使用ISO 8601将我的应用用户输入的日期转换为Joda-Time格式,因此我使用以下代码但出现错误:
String oldDate = "05/05/2013";
DateTime oldD = DateTime.parse(oldDate);
DateTimeFormatter OldDFmt = ISODateTimeFormat.dateTime();
String str = OldDFmt.print(oldD);
System.out.println(str);
但我总是收到错误:
org.springframework.web.util.NestedServletException:Request 处理失败;嵌套异常是 java.lang.IllegalArgumentException:格式无效:“05/05/2013”是 在“/ 05/2013”中表示不正确
有人可以帮忙告诉我这里做错了什么吗?感谢。
答案 0 :(得分:5)
有人可以帮忙告诉我这里的错误吗?
此处发生错误。
DateTime oldD = DateTime.parse(oldDate);
DateTime.parse(String)
方法使用String
解析您的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]]])
你的
String oldDate = "05/05/2013";
不是
您需要使用具有相应格式的解析器解析您的String
日期,例如Paul Hicks建议的内容。然后,您可以将创建的DateTime
格式化为ISO标准格式。
答案 1 :(得分:4)
您用于解析字符串DateTime.parse(oldDate)
的格式化程序是默认格式化程序:根据javadocs ISODateTimeFormat.dateTimeParser()
。您需要一个能够了解字符串格式DateTimeFormatter
的解析dd/mm/yyyy
。我不使用joda-time,但我认为你想要这个:
DateTimeFormatter stringParser = DateTimeFormat.forPattern("dd/MM/yyyy");
其余代码看起来不错。