有时候,我们需要日期的计算,比如在当前日期的基础上移动X天是什么时候,或者在指定的某一天的基础上移动X天是什么时候,等等。。
public static void main(String[] args) {
DateDemo.nowDateMove(3);
DateDemo.unKnownDateMove(2016,12,12,13);
}
public static void nowDateMove(int num) {
//获取当前日期
LocalDate ld = LocalDate.now();
//要移动的天数num,可以是整数或者负数但是后退推荐使用minusDays
LocalDate ll = ld.plusDays(num);
System.out.println("今天是: " + ld + "------再过" + num + "天是:" + ll);
}
public static void unKnownDateMove(int year, int month, int day, int num) {
//指定日期
LocalDate ld = LocalDate.of(year, month, day);
//要移动的天数num,可以是整数或者负数但是后退推荐使用minusDays
LocalDate ll = ld.plusDays(num);
System.out.println("指定日期是: " + ld + "------再过" + num + "天是:" + ll);
//后退推荐使用minusDays
LocalDate lm = ld.minusDays(num);
System.out.println("指定日期是: " + ld + "------往前" + num + "天是:" + lm);
}
输出结果
今天是: 2018-12-22------再过3天是:2018-12-25
指定日期是: 2016-12-12------再过13天是:2016-12-25
指定日期是: 2016-12-12------往前13天是:2016-11-29
之前我也碰到过类似的问题,但是的解决方案是,感觉还是LocalDate简单
1、在当前基础上后退
public class DateMoveUtil {
/**
* 日期计算 在当前日期的基础上,推后num天
* @param num
* @return
*/
public String dateFun(int num) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
//推后一定天数
calendar.add(Calendar.DATE,num);
//返回一个Date对象,表示此Calendar的时间值
date = calendar.getTime();
String dateTime = format.format(date);
return dateTime;
}
}
2、在某一日期之后后退
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(“2018-10-10”);
Date date1 = new Date(date.getTime() + 7 * 24 * 60 * 60 * 1000L);
String time = format.format(date1);
仅供参考,如果大家有好的方法,虚心请教。