【发布时间】:2014-04-01 17:13:32
【问题描述】:
考虑以下代码:
public static void main(String[] args) {
String pattern = "MMM dd, yyyy HH:mm:ss a z";
// joda-time
DateTime dt = DateTime.now();
System.out.println(dt.toString(pattern));
// java.time
ZonedDateTime ldt = ZonedDateTime.now();
System.out.println(ldt.toString(pattern)); // doesn't exist
System.out.println(ldt.format(DateTimeFormatter.ofPattern(pattern)));
}
joda-time 类(DateTime、LocalDate 等)包含一个 toString 方法,该方法接受您想要的格式的字符串。这是一个非常方便的方法。然而,java-8 实现省略了这个方法。相反,您需要致电format(DateTimeFormatter formatter)。
一个小小的抱怨,当然。但我的问题是:java.time 中省略了这个有什么原因?由于这个小疏忽,将我的应用程序从 joda-time 转换为 java.time 将变得更加困难。但是,如果有合乎逻辑的原因,我可以接受。并不是说你是来缓解我的顾虑,而是我想我会问一下以防万一。
编辑:对于近距离投票者来说,这不是一个基于意见的问题。任何熟悉 joda-time/java.time 的内部工作原理及其以某种方式开发的动机的人都有资格回答这个问题,即使他们从未回答过。
【问题讨论】:
-
请注意,joda-time 仍然是一个地狱般的库,没有真正的理由(除非您需要为
.jar节省 500KB 的存储空间)来切换。 -
java.time的主要目的是防止新项目需要 joda-time 吗? -
@ryvantage
java.time的作者是JodaTime的作者。所以我想说java.time是JodaTime的精神继承者。 -
@ryvantage TBH,这是一个基于意见的问题,因为没有真正的答案(除非实际作者插话)。我们只是在猜测。
-
正是我问这个问题的原因:如果同一作者写了两个,那么他一定有理由省略该方法。我只是想知道为什么。
标签: java java-8 jodatime java-time