java.time
包import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class ThreeMonthsAgo {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate threeMonthsAgo = today.minus(3, ChronoUnit.MONTHS);
List<LocalDate> dates = new ArrayList<>();
while (threeMonthsAgo.isBefore(today)) {
dates.add(threeMonthsAgo);
threeMonthsAgo = threeMonthsAgo.plusDays(1);
}
for (LocalDate date : dates) {
System.out.println(date);
}
}
}
实现过程:这种方法使用了 Java 8 的 java.time
包,其中 LocalDate
表示日期,ChronoUnit
表示时间单位(例如天、月等)。我们首先获取当前日期,然后使用 minus()
方法减去 3 个月,得到三个月前的日期。接着,我们使用一个循环将三个月前的日期逐天添加到一个 List
中。
性能:性能良好,使用 Java 8 的 java.time
包进行日期计算,内部实现经过优化。
使用场景:适用于 Java 8 及以上版本的项目,不需要引入第三方库。
首先需要添加 Joda-Time 库的 Maven 或 Gradle 依赖:
Maven 坐标:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.11</version>
</dependency>
Gradle 坐标:
implementation 'joda-time:joda-time:2.10.11'
import org.joda.time.DateTime;
import org.joda.time.Days;
import java.util.ArrayList;
import java.util.List;
public class ThreeMonthsAgo {
public static void main(String[] args) {
DateTime today = new DateTime();
DateTime threeMonthsAgo = today.minusMonths(3);
List<DateTime> dates = new ArrayList<>();
while (threeMonthsAgo.isBefore(today)) {
dates.add(threeMonthsAgo);
threeMonthsAgo = threeMonthsAgo.plusDays(1);
}
for (DateTime date : dates) {
System.out.println(date);
}
}
}
实现过程:这种方法使用了 Joda-Time 库,它提供了比 Java 8 的 java.time
包更丰富的日期和时间处理功能。我们首先获取当前日期,然后使用 minusMonths()
方法减去 3 个月,得到三个月前的日期。接着,我们使用一个循环将三个月前的日期逐天添加到一个 List
中。
性能:性能良好,Joda-Time 库经过了广泛优化和测试。
使用场景:适用于 Java 8 之前的项目或需要更丰富的日期和时间处理功能的项目。
使用 Java 8 的 java.time
包是首选,它是 Java 标准库的一部分,无需额外引入依赖。性能良好,且提供了许多日期和时间处理功能。
如果项目使用 Java 8 之前的版本,或需要更丰富的日期和时间处理功能,可以使用 Joda-Time 库。它具有广泛的功能和优化,并且在早期 Java 版本中被广泛使用。
两种方法都是通过计算当前日期减去 3 个月来获取三个月前的日期,然后通过循环逐天生成日期列表。
性能方面,两种方法都可以在大多数场景下获得良好的性能。Java 8 的 java.time
包经过了优化,并且 Joda-Time 库也经过了广泛的优化和测试。
根据实际情况选择使用 Java 8 的 java.time
包或 Joda-Time 库,取决于项目的要求和所使用的 Java 版本。在新的 Java 项目中,建议使用 Java 8 的 java.time
包,因为它是 Java 标准库的一部分。