为什么有这么多方法在java中获取日期时间?

Abh*_*rya 1 java datetime android

我一直在研究一个简单的基于字典的Android应用程序,所以我想要搜索在开发中使用的最佳实践.所以我搜索了获取时间和日期的最佳方法,但我发现这么多的方法都产生了日期和时间.

例如:Java - 如何获取当前时间和日期

在这里,我找到了多种方法来获取格式化的时间和日期.

代码片段

对于java.util.Date,只需创建一个新的Date()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)

对于java.util.Calendar,使用Calendar.getInstance()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)

对于java.time.LocalDateTime,使用LocalDateTime.now()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)

对于java.time.LocalDate,使用LocalDate.now()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16
Run Code Online (Sandbox Code Playgroud)

为什么有这么多方法在java中获取日期时间?还有什么是获取日期和时间的最佳方法?

Kay*_*man 5

因为日期和时间是复杂的事情,如如何处理货币以及如何将文本转换为字节和返回.

应该使用java.timeJava 8中引入的软件包,因为它们已经修复了一些东西,并试图让它变得不那么烦人和怪异.它基于Joda-Time,这是一个经过深思熟虑的图书馆.

Date并且Calendar是旧的时间/日期API的一部分,虽然没有那么多的API,但是这些类仍然java.util存在并且存在许多设计问题.它们仍然有效,但你不应该在新代码中真正使用它们.不是因为他们被弃用(他们不是),而是因为他们很糟糕.试想一下,Date就是Instant喜欢VectorArrayList.

  • 我看到了优点和缺点,但对于较旧的Android设备恕我直言,你可以做的最好是将[TheeTenABP](https://github.com/JakeWharton/ThreeTenABP)添加到你的Android项目,以便使用java.time的功能.如果这不同意谷歌的建议,那么我不同意谷歌的建议. (2认同)