本月、本周、本年

 

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;
    }

}

 

posted on 2017-11-25 17:18  whlshot  阅读(144)  评论(0)    收藏  举报

导航