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

时间:2018-02-26 09:20:49

标签: java android datetime

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

例如:Java - How to get current time and date

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

代码段

对于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

对于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

对于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

对于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

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

3 个答案:

答案 0 :(得分:5)

因为日期和时间很复杂,比如如何处理货币以及如何将文本转换为字节和返回。

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

DateCalendar是旧时间/日期API的一部分,虽然没有那么多的API,但这些类仍然停留在java.util上很多设计问题。它们仍然有效,但你不应该在新代码中使用它们。不是因为他们已经弃用(他们不是),而是因为他们不好。想象DateInstantVectorArrayList

答案 1 :(得分:1)

日期可以给你日期和时间,但你不能用它做很多其他事情。日历可以通过跳到下周三或添加一个月(根据当前月份的天数)来操纵日期和时间。正如其他人所说,LocalDate(时间)只能从API级别26获得,但具有操作日期(和时间)的特定方法,而不是日历的功能(字段名称,数量)样式。

答案 2 :(得分:0)

我建议使用日历。

日期已弃用或未建议。

LocalDate和LocalDateTime需要API 26。