import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestDate {
private static final Logger logger = LoggerFactory.getLogger(TestDate.class);
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Test
public void test() {
logger.info("本周的开始时间:{},结束时间:{}", getWeekDateTime());
logger.info("本月的开始时间:{},结束时间:{}", getMonthDateTime());
logger.info("本年的开始时间:{},结束时间:{}", getYearDateTime());
}
/**
* 获取本周的开始时间和结束时间
*
* @return
*/
private String[] getWeekDateTime() {
Calendar calendar = Calendar.getInstance();
// 判断要计算的日期是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);// 获取当前日期是一个星期的第几天
if (1 == dayWeek) {
calendar.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天是星期一
calendar.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = calendar.get(Calendar.DAY_OF_WEEK);
// 根据日期的规则,给当前日期减去星期几与一个星期
calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - day);
String startTime = dateFormat.format(calendar.getTime());
calendar.add(Calendar.DATE, 6);
String endTime = dateFormat.format(calendar.getTime());
String[] dateTime = new String[2];
dateTime[0] = startTime;
dateTime[1] = endTime;
return dateTime;
}
/**
* 获取本月的开始时间和结束时间
*
* @return
*/
public String[] getMonthDateTime() {
Calendar calendar = Calendar.getInstance();
GregorianCalendar gregorianCalendar = (GregorianCalendar) Calendar.getInstance();
gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
String startTime = dateFormat.format(gregorianCalendar.getTime());
calendar.add(Calendar.MONTH, 1);// 加一个月
calendar.set(Calendar.DATE, 1);// 设置为该月第一天
calendar.add(Calendar.DATE, -1);// 再减一天即为上个月最后一天
String endTime = dateFormat.format(calendar.getTime());
String[] dateTime = new String[2];
dateTime[0] = startTime;
dateTime[1] = endTime;
return dateTime;
}
/**
* 获取本年的开始时间和结束时间
*
* @return
*/
public String[] getYearDateTime() {
String[] dateTime = new String[2];
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 1);
String startTime = dateFormat.format(calendar.getTime());
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 31);
String endTime = dateFormat.format(calendar.getTime());
dateTime[0] = startTime;
dateTime[1] = endTime;
return dateTime;
}
}