String dateString = "20110706 1607";
DateTimeFormatter dateStringFormat = DateTimeFormat.forPattern("YYYYMMDD HHMM");
DateTime dateTime = dateStringFormat.parseDateTime(dateString);
Run Code Online (Sandbox Code Playgroud)
产生的堆栈跟踪:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "201107206 1607" is malformed at " 1607"
at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:644)
at org.joda.time.convert.StringConverter.getInstantMillis(StringConverter.java:65)
at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:171)
at org.joda.time.DateTime.<init>(DateTime.java:168)
......
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?如果我使用模式"YYYYMMDD"将字符串截断为20110706,它可以工作,但我也需要小时和分钟值.奇怪的是,我可以使用相同的模式"YYYYMMDD HHMM"将Jodatime DateTime转换为String
谢谢你的期待
Jon*_*eet 11
看看你的模式 - 你指的是"MM"两次.这不可能是正确的.那将尝试从文本的两个不同位解析相同的字段(在这种情况下为月)两次.你期望赢得哪个?你要:
DateTimeFormat.forPattern("yyyyMMdd HHmm")
Run Code Online (Sandbox Code Playgroud)
查看文档,DateTimeFormat了解一切意味着什么.
请注意,尽管toString使用该模式调用将生成一个字符串,但它不会生成您想要的字符串.如果由于外壳输出甚至包括"YYYY"和"DD",我不会感到惊讶,虽然我现在无法测试它.至少你有两个月而不是最后出现的分钟.