需求:数据是从每年的11月15号到今天开始算的,但是你时间选择的是2021年10月1号,那么就需要你去查上一年11月15号到今天的数据,怎么写这个判断呢?
先获取开始时间,然后再判断开始时间是否是在11月15号之后的,如果不是,就查上一年11月15号到今天的数据,思路我都懂,但是不会写
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
String date = "2021-11-01";
//String date = "2021-12-01";
String[] dateRange = getDateRange(date);
if(dateRange != null && dateRange.length >0 ) {
String startDate = dateRange[0];
String endDate = dateRange[1];
System.out.println("开始时间:"+startDate);
System.out.println("结束时间:"+endDate);
}
}
private static String[] getDateRange(String date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date parse1 = format.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(parse1);
int year = cal.get(Calendar.YEAR);
String newDate = year+"-11-15";
Date parse2 = format.parse(newDate);
if(parse1.getTime() >= parse2.getTime()) {
return new String[]{newDate, date};
} else {
newDate = (year-1)+"-11-15";
return new String[]{newDate, date};
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
```java
/***
* @Description: date1 > date2 -> true
* @param date1
* @param date2
* @param format yyyy-MM-dd"
* @Date: 2022/2/18
*/
public static Boolean dateAfterbyDtFormat(String date1, String date2,String format) {
Date d1 = getDate(date1, format);
Date d2 = getDate(date2, format);
if(d1 != null && d2 != null) {
return d1.after(d2);
}
return null;
}
用上面的方法比较开始时间和 2021-11-15 ,如果 早于2021-11-15 , 开始时间设置为 2021-11-15,结束时间就是今天,带入数据库between and 查询
```