获取自然月的起始日期和终止日期, 比如当前为 12 月 5 日, 读取10 月 26 日 - 11 月 25 日
的数据。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
System.out.println(getFirstday_Lastday_Month(getZGKQTime()));
}
// 判断当前时间是否在早上8点之前还是之后
public static String getZGKQTime() {
Calendar c = Calendar.getInstance();
int timeOfDay = c.get(Calendar.HOUR_OF_DAY);
String queryTime = "";
if (timeOfDay < 8) {
c.add(Calendar.DATE, -1);
queryTime = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
} else {
queryTime = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
return queryTime;
}
// 获取自然月的起始日期和终止日期,比如当前为12月5日,读取10月26日-11月25日的数据。
private static Map<String, String> getFirstday_Lastday_Month(String dateStr) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
try {
Date date = df.parse(dateStr);
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
} catch (ParseException e) {
e.printStackTrace();
}
Date theDate = calendar.getTime();
String rqString = dateStr.substring(8, 10);
String day_first, day_last;
if ("25".compareTo(rqString) < 0) {
// 本月第一天
GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
gcLast.setTime(theDate);
gcLast.set(Calendar.DAY_OF_MONTH, 25);
day_first = df.format(gcLast.getTime());
// 上个月最后一天
calendar.add(Calendar.MONTH, -1); // 加一个月
calendar.set(Calendar.DATE, 26); // 设置为该月第一天
day_last = df.format(calendar.getTime());
} else {
// 上个月第一天
calendar.add(Calendar.MONTH, -1); // 加一个月
calendar.set(Calendar.DATE, 25); // 设置为该月第一天
day_first = df.format(calendar.getTime());
// 上上个月最后一天
calendar.add(Calendar.MONTH, -1); // 加一个月
calendar.set(Calendar.DATE, 26); // 设置为该月第一天
day_last = df.format(calendar.getTime());
}
Map<String, String> map = new HashMap<String, String>();
map.put("last", day_first);
map.put("first", day_last);
return map;
}
}
运行结果
```
{last=2019-03-25, first=2019-02-26}
```