JAVA 获取某个时间的上周周一和周日时间、上一月的第一天和最后一天

/**
     * 根据传入时间 获取昨天的开始时间
     * @param time
     * @return
     */
    public static String getLastDayStartDate(String time) {
        SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = foramt.parse(time);

        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar  cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, -1);//当前时间减一天

        return foramt.format(cal.getTime()) + " 00:00:00";
    }

    /**
     * 根据传入时间 获取昨天的结束时间
     * @param time
     * @return
     */
    public static String getLastDayEndDate(String time) {
        SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = foramt.parse(time);

        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar  cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, -1);//当前时间减一天

        return foramt.format(cal.getTime()) + " 23:59:59";
    }




/**
 *  根据传入时间 获取上周一时间
 * @param time
 * @return
 */
public static String getLastWeekMonday(String time) {
    SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
        date = foramt.parse(time);

    } catch (ParseException e) {
        e.printStackTrace();
    }
    Calendar  cal = Calendar.getInstance();
    cal.setTime(date);
    if (1 == cal.get(Calendar.DAY_OF_WEEK)) {//判断当前日期是否为周末,因为周末是本周第一天,如果不向后推迟一天的到的将是下周一的零点,而不是本周周一零点
        cal.add(Calendar.DATE, -1);
    }
    cal.add(Calendar.DAY_OF_MONTH, -7);//时间减去7天
    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//Calendar.MONDAY 这个是周一的意思      想获取周几就更换这个

    return foramt.format(cal.getTime()) + " 00:00:00";
}

/**
 * 根据传入时间 获取上周周天时间
 * @param time 
 * @return
 */
public static String getLastWeekSunday(String time) {
    SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
        date = foramt.parse(time);

    } catch (ParseException e) {
        e.printStackTrace();
    }
    Calendar  cal = Calendar.getInstance();
    cal.setTime(date);

    if (1 == cal.get(Calendar.DAY_OF_WEEK)) {//判断当前日期是否为周末,因为周末是本周第一天,如果不向后推迟一天的到的将是下周一的零点,而不是本周周一零点
        cal.add(Calendar.DATE, -1);
    }
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//Calendar.SUNDAY 周天想获取周几就更换这个
    return foramt.format(cal.getTime()) + " 23:59:59";
}



/**
 *  根据传入时间 获取上月第一天的一时间
 * @param time
 * @return
 */
public static String getLastMonthFirstDate(String time) {
    SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    String monthFirstDate = "";
    try {
        date = foramt.parse(time);
        Calendar c = Calendar.getInstance();
        //设置为指定日期
        c.setTime(date);
        //指定日期月份减去一
        c.add(Calendar.MONTH, -1);
        //指定日期月份减去一后的 获取第一天
        c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
        //获取最终的时间
        Date lastDateOfPrevMonth = c.getTime();
        monthFirstDate =  foramt.format(lastDateOfPrevMonth)+" 00:00:00";
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return monthFirstDate;
}

/**
 *  根据传入时间 获取上月最后一天一时间
 * @param time
 * @return
 */
public static String getLastMonthEndDate(String time) {
    SimpleDateFormat foramt = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    String monthFirstDate = "";
    try {
        date = foramt.parse(time);
        Calendar c = Calendar.getInstance();
        //设置为指定日期
        c.setTime(date);
        //指定日期月份减去一
        c.add(Calendar.MONTH, -1);
        //指定日期月份减去一后的 最大天数
        c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
        //获取最终的时间
        Date lastDateOfPrevMonth = c.getTime();
        monthFirstDate =  foramt.format(lastDateOfPrevMonth)+" 23:59:59";
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return monthFirstDate;
}


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值