我一直在研究一个简单的基于字典的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中获取日期时间?还有什么是获取日期和时间的最佳方法?
答案 0 :(得分:5)
因为日期和时间很复杂,比如如何处理货币以及如何将文本转换为字节和返回。
你应该使用Java 8中引入的java.time
软件包,因为他们修复了一些东西,并试图让它不那么烦人和怪异。它基于Joda-Time,这是一个经过深思熟虑的图书馆。
Date
和Calendar
是旧时间/日期API的一部分,虽然没有那么多的API,但这些类仍然停留在java.util
上很多设计问题。它们仍然有效,但你不应该在新代码中使用它们。不是因为他们已经弃用(他们不是),而是因为他们不好。想象Date
至Instant
,Vector
至ArrayList
。
答案 1 :(得分:1)
日期可以给你日期和时间,但你不能用它做很多其他事情。日历可以通过跳到下周三或添加一个月(根据当前月份的天数)来操纵日期和时间。正如其他人所说,LocalDate(时间)只能从API级别26获得,但具有操作日期(和时间)的特定方法,而不是日历的功能(字段名称,数量)样式。
答案 2 :(得分:0)
我建议使用日历。
日期已弃用或未建议。
LocalDate和LocalDateTime需要API 26。