考虑以下代码:
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 的内部工作原理以及他们以某种方式开发的动机的人都有资格回答这个问题,即使他们从未回答过。