Calendar 获取日期数据

工具 / 2022-03-07

Calendar 获取日期

/***
 * 获取 日期所在 年
 *
 * */
public static int getYear(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.YEAR);
}

/***
 * 获取 日期所在 月
 *
 * */
public static int getMonth(Date date) {

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.MONTH) + 1;
}

/***
 * 获取 日期 当前天数日
 *
 * */
public static int getDay(Date date) {

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.DAY_OF_MONTH);
}

/***
 * 获取某一时间 所在 月份 的第一天
 *  比如 : 2020-01-20
 *     结果为: 2020-01-01 00:00:00
 * */
public static Date getFirstDateOfMonth(Date date) {
    Calendar firstDate = Calendar.getInstance();
    firstDate.setTime(date);
    final int last = firstDate.getActualMinimum(Calendar.DAY_OF_MONTH);
    firstDate.set(Calendar.DAY_OF_MONTH, last);
    //当前日期 的 月份的 第一天)
    return firstDate.getTime();
}

/***
 * 获取某一时间 所在 月份 的最后一天
 *  比如 : 2020-01-20
 *     结果为: 2020-01-31 00:00:00
 * */
public static Date getEndDayOfMonth(Date date) {

    Calendar lastDateMonth = Calendar.getInstance();
    lastDateMonth.setTime(date);
    final int lastDay = lastDateMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
    lastDateMonth.set(Calendar.DAY_OF_MONTH, lastDay);
    //当前日期 的月份的最后一天
    return lastDateMonth.getTime();
}

/***
 * 获取某一时间 所在 月份 下个月的第一天
 *  比如 : 2020-01-20
 *     结果为:2020-02-01 00:00:00
 * */
public static Date getFirstDayOfNext(Date date) {

    Calendar nextMonthFirst = Calendar.getInstance();
    nextMonthFirst.setTime(date);
    nextMonthFirst.set(Calendar.DAY_OF_MONTH, 1);
    nextMonthFirst.add(Calendar.MONTH, 1);
    return nextMonthFirst.getTime();
}

public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    Date firstDateOfMonth = getFirstDateOfMonth(new Date());
    Date endDayOfMonth = getEndDayOfMonth(new Date());
    Date firstDayOfNext = getFirstDayOfNext(new Date());

    int year = getYear(new Date());
    int month = getMonth(new Date());
    int day = getDay(new Date());


    System.out.println("获取某一时间 所在 月份 的第一天  :" + sdf.format(firstDateOfMonth));
    System.out.println("获取某一时间 所在 月份 的最后一天  :" + sdf.format(endDayOfMonth));
    System.out.println("获取某一时间 所在 月份 下个月的第一天  :" + sdf.format(firstDayOfNext));

    System.out.println("获取某一时间 所在 年份  :" + year);
    System.out.println("获取某一时间 所在 月份  :" + month);
    System.out.println("获取某一时间 所在 当天  :" + day);
}

输出结果:

获取某一时间 所在 月份 的第一天  :2022-03-01
获取某一时间 所在 月份 的最后一天  :2022-03-31
获取某一时间 所在 月份 下个月的第一天  :2022-04-01
获取某一时间 所在 年份  :2022
获取某一时间 所在 月份  :3
获取某一时间 所在 当天  :7