PHP手机网站开发工程师/网站的seo方案
因为最近的业务系统需求,前端有两个时间选择框,分别为startTime和endTime,用户展示一段时间内的折线图,但是如果用户选择的时间段太长,折线图时间轴太密集,展示效果十分不佳,于是我使用java代码书写了一个时间工具类,可以返回当前日期或指定日期的前N天的日期集合,如果传入的开始时间和结束时间间隔太大,还可以自动适应时间。
/**
* 用户可以传入startTime或endTime任意一个或两个,也可以不传入
* 当传入的时间间隔太长时,默认返回最近的nday
* plus: StringUtils为org.apache.commons.lang.StringUtils,读者也可以手动判断""和null
*/
public List<String> getNDaysList(String startTime, String endTime, int nday) {
int ndaycurrent = nday - 1;
// 返回的日期集合
List<String> days = new ArrayList<String>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,-ndaycurrent);
Date start = calendar.getTime();
Date end = new Date();
if (StringUtils.isNotBlank(startTime) && StringUtils.isBlank(endTime)){
//如果用户只选择了startTime,endTime为null,startTime + 10的日期
start = dateFormat.parse(startTime);
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(start);
calendar1.add(Calendar.DATE, ndaycurrent);
end = calendar1.getTime();
}else if(StringUtils.isBlank(startTime) && StringUtils.isNotBlank(endTime)){
//如果用户只选择了endTime,startTime为null,endTime - 10的日期
end = dateFormat.parse(endTime);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(end);
calendar2.add(Calendar.DATE, -ndaycurrent);
start = calendar2.getTime();
}else if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){
//如果用户选择了startTime和endTime,判断endTime - startTime两个日期是否超过了ndaycurrent,超过返回最近nday天记录
Date start1 = dateFormat.parse(startTime);
Date end1 = dateFormat.parse(endTime);
int a = (int) ((end1.getTime() - start1.getTime()) / (1000*3600*24));
if (a <= ndaycurrent) {
//如果小于等于n天
start = dateFormat.parse(startTime);
end = dateFormat.parse(endTime);
}
}
//如果超过了ndaycurrent天,就是默认的start和end
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
days.add(dateFormat.format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return days;
}
/***
* intervals 前后n天
* @param args
*/
public static void main(String[] args) {
int intervals=30;
ArrayList passDaysList = new ArrayList<>();
ArrayList fetureDaysList = new ArrayList<>();
for (int i = 0; i <intervals; i++) {
passDaysList.add(getDays(i,false));
fetureDaysList.add(getDays(i,true));
}
System.out.println(passDaysList) ;
System.out.println(fetureDaysList) ;
}
/**
*
* @param i 第几天
* @param b true未来 false 过去
* @return
*/
private static String getDays(int i, boolean b) {
Calendar calendar = Calendar.getInstance();
if (b) {
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + i);
}else {
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - i);
}
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
/**带星期的*/
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd (EEEE)");
String result = format.format(today);
return result;
}
}
运行结果
[2020-12-16, 2020-12-15, 2020-12-14, 2020-12-13, 2020-12-12, 2020-12-11, 2020-12-10, 2020-12-09, 2020-12-08, 2020-12-07, 2020-12-06, 2020-12-05, 2020-12-04, 2020-12-03, 2020-12-02, 2020-12-01, 2020-11-30, 2020-11-29, 2020-11-28, 2020-11-27, 2020-11-26, 2020-11-25, 2020-11-24, 2020-11-23, 2020-11-22, 2020-11-21, 2020-11-20, 2020-11-19, 2020-11-18, 2020-11-17]
[2020-12-16, 2020-12-17, 2020-12-18, 2020-12-19, 2020-12-20, 2020-12-21, 2020-12-22, 2020-12-23, 2020-12-24, 2020-12-25, 2020-12-26, 2020-12-27, 2020-12-28, 2020-12-29, 2020-12-30, 2020-12-31, 2021-01-01, 2021-01-02, 2021-01-03, 2021-01-04, 2021-01-05, 2021-01-06, 2021-01-07, 2021-01-08, 2021-01-09, 2021-01-10, 2021-01-11, 2021-01-12, 2021-01-13, 2021-01-14]
带有星期的运行结果
[2020-12-16 (星期三), 2020-12-15 (星期二), 2020-12-14 (星期一), 2020-12-13 (星期日), 2020-12-12 (星期六), 2020-12-11 (星期五), 2020-12-10 (星期四), 2020-12-09 (星期三), 2020-12-08 (星期二), 2020-12-07 (星期一), 2020-12-06 (星期日), 2020-12-05 (星期六), 2020-12-04 (星期五), 2020-12-03 (星期四), 2020-12-02 (星期三), 2020-12-01 (星期二), 2020-11-30 (星期一), 2020-11-29 (星期日), 2020-11-28 (星期六), 2020-11-27 (星期五), 2020-11-26 (星期四), 2020-11-25 (星期三), 2020-11-24 (星期二), 2020-11-23 (星期一), 2020-11-22 (星期日), 2020-11-21 (星期六), 2020-11-20 (星期五), 2020-11-19 (星期四), 2020-11-18 (星期三), 2020-11-17 (星期二)]
[2020-12-16 (星期三), 2020-12-17 (星期四), 2020-12-18 (星期五), 2020-12-19 (星期六), 2020-12-20 (星期日), 2020-12-21 (星期一), 2020-12-22 (星期二), 2020-12-23 (星期三), 2020-12-24 (星期四), 2020-12-25 (星期五), 2020-12-26 (星期六), 2020-12-27 (星期日), 2020-12-28 (星期一), 2020-12-29 (星期二), 2020-12-30 (星期三), 2020-12-31 (星期四), 2021-01-01 (星期五), 2021-01-02 (星期六), 2021-01-03 (星期日), 2021-01-04 (星期一), 2021-01-05 (星期二), 2021-01-06 (星期三), 2021-01-07 (星期四), 2021-01-08 (星期五), 2021-01-09 (星期六), 2021-01-10 (星期日), 2021-01-11 (星期一), 2021-01-12 (星期二), 2021-01-13 (星期三), 2021-01-14 (星期四)]