繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM