获取自然月的起始日期和终止日期
Posted hglibin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取自然月的起始日期和终止日期相关的知识,希望对你有一定的参考价值。
获取自然月的起始日期和终止日期, 比如当前为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;
/**
* @author libin
* @date 2018/12/14 15:14:06
*/
public class Demo {
public static void main(String[] args) {
System.out.println(getFirstday_Lastday_Month(getZGKQTime())); // 2018-12-14日执行
}
// 判断当前时间是否在早上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=2018-11-25, first=2018-10-26}
以上是关于获取自然月的起始日期和终止日期的主要内容,如果未能解决你的问题,请参考以下文章