Java获取 周月季度年 起始结束时间

参考文章:
Java 8 获取本(天周月季度年)的开始、结束时间.
Java 使用LocalDate获取前一天.

获取 周起始结束时间

/**
 * 获取周 第一天或最后一天
 * @param weeks 0本周,1下周,-1上周 以此类推
 * @param isFirst true获取开始时间 false获取结束时间
 * @return java.lang.String
 */
public static String getStartOrEndDayOfWeek(long weeks, Boolean isFirst){
    LocalDate resDate = LocalDate.now().plusWeeks(weeks);
    DayOfWeek week = resDate.getDayOfWeek();
    int value = week.getValue();
    if (isFirst) {
        resDate = resDate.minusDays(value - 1);
    } else {
        resDate = resDate.plusDays(7 - value);
    }
    return resDate.toString();
}

获取 月起始结束时间

/**
 * 获取月份 第一天或最后一天
 * @param months 0本月,1下月,-1上月 以此类推
 * @param isFirst true获取开始时间 false获取结束时间
 * @return java.lang.String
 */
public static String getStartOrEndDayOfMonth(long months, Boolean isFirst){
    LocalDate resDate = LocalDate.now().plusMonths(months);
    Month month = resDate.getMonth();
    int length = month.length(resDate.isLeapYear());
    if (isFirst) {
        resDate = LocalDate.of(resDate.getYear(), month, 1);
    } else {
        resDate = LocalDate.of(resDate.getYear(), month, length);
    }
    return resDate.toString();
}

获取 季度起始结束时间

/**
 * 获取季度 第一天或最后一天
 * @param quarters 0本季度,1下季度,-1上季度 以此类推
 * @param isFirst true获取开始时间 false获取结束时间
 * @return java.lang.String
 */
public static String getStartOrEndDayOfQuarter(long quarters, Boolean isFirst){
    LocalDate resDate = LocalDate.now().plusMonths(quarters * 3);
    Month month = resDate.getMonth();
    Month firstMonthOfQuarter = month.firstMonthOfQuarter();
    Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
    if (isFirst) {
        resDate = LocalDate.of(resDate.getYear(), firstMonthOfQuarter, 1);
    } else {
        resDate = LocalDate.of(resDate.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(resDate.isLeapYear()));
    }
    return resDate.toString();
}

获取 年起始结束时间

/**
 * 获取年份 第一天或最后一天
 * @param years 0本今年,1明年,-1去年 以此类推
 * @param isFirst true获取开始时间 false获取结束时间
 * @return java.lang.String
 */
public static String getStartOrEndDayOfYear(long years, Boolean isFirst){
    LocalDate resDate = LocalDate.now().plusYears(years);
    if (isFirst) {
        resDate = LocalDate.of(resDate.getYear(), Month.JANUARY, 1);
    } else {
        resDate = LocalDate.of(resDate.getYear(), Month.DECEMBER, Month.DECEMBER.length(resDate.isLeapYear()));
    }
    return resDate.toString();
}

你可能感兴趣的:(Java)