Mar*_*rco 0 java format date jodatime simpledateformat
我已经采取了SOF和其他网站上给出的所有答案,并尝试这样做:
String fromDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sssX").format(new DateTime().plusMonths(-6));
Run Code Online (Sandbox Code Playgroud)
但是我被给了例外:
线程"main"中的异常java.lang.IllegalArgumentException:无法将给定的Object格式化为Date
我究竟做错了什么?
String fromDateTime = OffsetDateTime.now(ZoneId.systemDefault()).minusMonths(6).toString();
System.out.println(fromDateTime);
Run Code Online (Sandbox Code Playgroud)
刚刚在我的计算机上运行时的输出:
2018-08-04T12:45:34.087966 + 01:00
java.time是现代Java日期和时间API,已经有效地取代了Joda-Time.从主页:
请注意,Joda-Time被认为是一个很大程度上"完成"的项目.没有计划重大改进.如果使用Java SE 8,请迁移到
java.time(JSR-310).
在代码中,我利用了java.time类的toString方法生成ISO 8601格式这一事实,即您要求的格式.我发现秒上的额外小数不太可能造成任何问题,因为在标准范围内允许这样做.
String fromDateTime = new DateTime().minusMonths(6).toString();
Run Code Online (Sandbox Code Playgroud)
示例输出:
2018-08-04T12:50:36.071 + 02:00
new DateTime()只有毫秒精度.您将始终在秒上获得正好3位小数.
java.time也适用于Java 6和7,并且在所有条件相同的情况下我推荐Joda-Time.只有被迫使用Java 5,Joda-Time无疑是不错的选择.
org.threeten.bp子包中导入日期和时间类.您的代码可以在没有错误迹象的情况下编译,但java.lang.IllegalArgumentException: Cannot format given Object as a Date在运行时会发出.这是因为SimpleDateFormat无法格式化Joda-Time DateTime对象.我们当然希望在编译时报告这一点.但除此之外SimpleDateFormat.format(Date)还有一个被重写的format(Object)继承自Format.它适用于格式化a Date或a Number(自纪元以来的毫秒).这个方法是编译器在传递时选择的方法DateTime.这就是没有编译时错误消息的原因.
提示:如果您没有立即了解错误消息,请将其粘贴到搜索引擎中.它经常会引导您解释和解决方案.也是在这种情况下.
java.time.java.time第一被描述.java.timeJava 6和7的后端(JST-310的ThreeTen).| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |