import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 时间处理工具类
*/
public class DateHandleUtil {
public static final long DAY_MILLIS = 1000*3600*24l;
public static void main(String[] args) throws ParseException {
//yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2021-02-24");
// System.out.println(new Date().getTime());
// System.out.println(date.getTime());
System.out.println("between_days========"+daysBetween(sdf.parse("2021-02-01"),sdf.parse("2021-02-23")));
getCoordinateOfAxisX(sdf.parse("2021-02-01"),sdf.parse("2021-02-23"), 12);
}
/**
* 根据筛选日期获取X轴坐标(以天为最小颗粒度)
* @param startDate
* @param endDate
* @param num X坐标 个数
* @return List<String>
*/
public static List<Date> getCoordinateOfAxisX(Date startDate, Date endDate, Integer num){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<Date> axisX = new ArrayList<>();
//添加第一个
axisX.add(startDate);
long time1 = startDate.getTime();
System.out.println("1====="+sdf.format(time1));
long time2 = endDate.getTime();
// System.out.println("daysBetween========"+daysBetween(startDate, endDate));
BigDecimal between_days = new BigDecimal(daysBetween(startDate, endDate)).divide(new BigDecimal(num-1), 3, BigDecimal.ROUND_HALF_UP);
// System.out.println("between_days========"+between_days);
long temp = new BigDecimal(DAY_MILLIS).multiply(between_days).longValue();
for (int i = 0; i < (num-1); i++){
time1+=temp;
Date resultDate = new Date(time1);
axisX.add(new Date(time1));
System.out.println((i+2)+"====="+sdf.format(resultDate));
}
return axisX;
}
/**
* 计算两个日期相隔多少天
* @param startDate
* @param endDate
* @return
*/
public static Integer daysBetween(Date startDate, Date endDate) {
long time1 = startDate.getTime();
long time2 = endDate.getTime();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.valueOf(String.valueOf(between_days));
}
/**
* 获取同比 日期
* @param date
* @return
*/
public static Date getYearOverYearDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//当前时间减去一年,即一年前的时间
calendar.add(Calendar.YEAR, -1);
return date==null?date:calendar.getTime();
}
/**
* 获取环比 日期
* @param date
* @return
*/
public static Date getChainComparisonDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//当前时间减去一个月,即一个月前的时间
calendar.add(Calendar.MONTH, -1);
return date==null?date:calendar.getTime();
}
}
测试结果: