Java 8中的新日期和时间API

9 浏览
0 Comments

Java 8中的新日期和时间API

在这个页面上,我读到以下内容:\n要对日期进行计算也非常简单。与Java < 1.8相比,这可能是最好的改进:\n[apcode language="java"]

Period p = Period.of(2, HOURS);
LocalTime time = LocalTime.now();
LocalTime newTime = time.plus(p); // 或者 time.plus(5, HOURS); 或者 time.plusHours(5); 

[/apcode]\n我不清楚在1.8之前有什么优势。\n也许有人可以给我举个例子?\n目前我正在思考新的日期和时间API的改进来自哪里。

0
0 Comments

Java 8引入了一个新的日期和时间API,这是为了解决之前Java日期和时间处理方式的不足之处。下面将介绍新的日期和时间API的一些优点和缺点。

优点:

1. 新的日期和时间API中的日期(LocalDate)、时间(LocalTime)、日期时间(LocalDateTime)和瞬时(Instant)的概念更加清晰,与常用语言中的含义相对应。

2. 初始化日期和时间到特定值变得更加简单,使用方法'of',例如LocalDate.of(2016,1,1)。

3. 处理闰年(使用方法isLeapYear)变得更加简单。

4. 添加和减去日期变得非常容易。例如,要引用10年后的今天:LocalDate.now().plusYears(10)。

5. 月份的编号偏移量调整为更符合直觉。现在'January'是'1',而不是之前的'0'。

缺点:

1. 目前还不支持JPA2。

2. 目前还不支持JSF2。

Java 8引入新的日期和时间API的原因是为了解决旧的日期和时间处理方式的不足。新的API提供了更清晰和易于使用的日期和时间概念,并且提供了更简单和直观的方法来处理日期和时间。然而,目前这个新的API还没有被JPA2和JSF2支持,可能会导致在使用这些技术的项目中无法使用新的日期和时间API。

0
0 Comments

Java 8引入了新的日期和时间API,主要是为了解决之前Java版本中日期和时间处理的一些问题。下面是Java 8中引入新的日期和时间API的原因以及解决方法:

原因:

1. 可读性:之前的Calendar.getInstance()方法命名不清晰,很难确定获取的是哪个实例,而LocalTime.now()方法则可以清楚地表达获取当前时间。

2. 使用简便:Calendar API使用复杂,因为它混合了简单日期和时间的概念,而新的时间API对不同的日期/时间概念进行了清晰的分离。

3. 安全性:Calendar API不安全,没有限制你手动更改对象的字段,可能导致错误。而新的API使用枚举类型来解决这个问题,并且使用不可变对象使其线程安全。

解决方法:

1. 使用LocalTime类来获取当前时间,代替之前的Calendar.getInstance()方法。

2. 使用plus方法来进行日期偏移,代替手动更改Calendar对象的字段。

新的日期和时间API受到了jodatime的启发,并且解决了之前Java日期和时间处理的一些问题。它具有更好的可读性、使用简便和安全性。对于Java 8之前的日期和时间处理,可以考虑使用第三方库jodatime。但是,对于Java 8及以上的版本,新的日期和时间API是一个很大的改进。

(注:上述内容中的代码为了方便阅读已经进行了一些调整,具体代码实现请参考原文链接)

0