![](/img/trans.png)
[英]Convert Joda-Time DateTime - ISO 8601 format date to another date format
[英]Java - Convert string to ISO 8601 date format error Joda-Time
我正在尝试使用Joda-Time将应用程序用户以String形式输入的日期转换为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);
但我总是出错:
org.springframework.web.util.NestedServletException:请求处理失败; 嵌套的异常为java.lang.IllegalArgumentException:无效的格式:“ 05/05/2013”的格式为“ / 05/2013”
有人可以帮忙告诉我我在做什么错吗? 谢谢。
有人可以帮忙告诉我我在做什么错吗?
错误发生在这里。
DateTime oldD = DateTime.parse(oldDate);
DateTime.parse(String)
方法使用ISODateTimeFormat.dateTimeParser()
解析String
参数。
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标准格式。
您用来解析字符串DateTime.parse(oldDate)
的格式化程序是默认格式器:根据javadocs ISODateTimeFormat.dateTimeParser()
。 您需要一个解析DateTimeFormatter
,它知道您的字符串格式dd/mm/yyyy
。 我不使用joda-time,但我认为您需要这样做:
DateTimeFormatter stringParser = DateTimeFormat.forPattern("dd/MM/yyyy");
其余代码看起来还不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.