【发布时间】:2019-02-04 11:24:54
【问题描述】:
我已经接受了 SOF 和其他网站上给出的所有答案,并尝试这样做:
String fromDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sssX").format(new DateTime().plusMonths(-6));
但我得到了例外:
线程“main”java.lang.IllegalArgumentException 中的异常:无法将给定对象格式化为日期
我做错了什么?
【问题讨论】:
-
你使用的是什么
DateTime类? -
使用 Joda-Time?然后坚持使用它并使用它的格式化程序(不是
SimpleDateFormat,这是出了名的麻烦,Joda-Time 已经有了替代品)。或者跳过两者并完全使用java.time, the modern Java date and time API。 -
或者使用新的java日期时间类:
ZonedDateTime.now().minusMonths(6).toString(). -
@Arnaud 这确实是问题所在。一个 toDate 做对了。实际的问题是我没有任何编译错误。有点奇怪,因为 Date 和 DateTime (多态性)之间没有联系。我想知道它怎么不能给我任何提示甚至错误。
-
@Marco
Date和DateTime来自不相关的框架,因此没有多态关系。恰恰相反,第二个来自 Joda-Time(显然),旨在替换第一个而不是补充。 Joda-Time 的创建者继续创建其继任者 JSR 310 和内置于 Java 8 及更高版本的 java.time 类。因此,没有理由再接触可怕的可恶的Date和Calendar和SimpleDateFormat类。仅使用 java.time 包中的类。
标签: java date format jodatime simpledateformat