需求: 例如当前时间为20180301,现在需要得到当前时间及其前5个月的时间,并且以201803方式输出。
在JDK8的新特性中, LocalDate类完美的解决了这个问题。
代码如下所示:
package com.date.model;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class Test03 {
public static void main(String[] args) {
Integer num = 201803;
String str = num.toString() + "01";
LocalDate startDate = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyyMMdd"));
List<Integer> billingList = new ArrayList<Integer>();
billingList.add(new Integer(DateTimeFormatter.ofPattern("yyyyMM").format(startDate)));
for (int a = 0; a < 5; a++) {
startDate = startDate.minusMonths(1L);
billingList.add(new Integer( DateTimeFormatter.ofPattern("yyyyMM").format(startDate) ));
}
System.out.println("billingList为: " + billingList);
System.out.println("--------------------- 下列是一个测试 ---------------------");
System.out.println("startDate为: " + startDate);
startDate.minusMonths(-5L);
System.out.println("startDate2为: " + startDate);
}
}
其中,获取当前月前5个月所用的函数 LocalDate.minusMonths(0L) 很好的解决了这个问题。
运行结果如下图所示: