获取开始或结束时间

1.目的

得到一个需求
传2022-01,能够根据这个时间,得到此时间的开始时间2022-01-01 00:00:00和结束时间2022-01-31 23:59:59
因此开发了此功能,根据年、年月、年月日,年月日时,年月日时分等等能够得到开始或结束时间

2.思路

利用重载方法和LocalDataTime的方式,能够的得到所需时间。写法简单,使用方便

3.代码

   /**
     * 获取时间
     *
     * @param year   年
     * @param month  月
     * @param day    日
     * @param hour   时
     * @param minute 分
     * @param second 秒
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getTime(int year, int month, int day, int hour, int minute, int second) {
        LocalDateTime localDateTime = LocalDateTime.of(year, month, day, hour, minute, second);
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
        return Date.from(zonedDateTime.toInstant());
    }


    /**
     * 获取开始时间
     *
     * @param year   年
     * @param month  月
     * @param day    日
     * @param hour   时
     * @param minute 分
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getBeginTime(int year, int month, int day, int hour, int minute) {
        return getTime(year, month, day, hour, minute, 0);
    }


    /**
     * 获取开始时间
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @param hour  时
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getBeginTime(int year, int month, int day, int hour) {
        return getBeginTime(year, month, day, hour, 0);
    }


    /**
     * 获取开始时间
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getBeginTime(int year, int month, int day) {
        return getBeginTime(year, month, day, 0);
    }


    /**
     * 获取开始时间
     *
     * @param year  年
     * @param month 月
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getBeginTime(int year, int month) {
        return getBeginTime(year, month, 1);
    }


    /**
     * 获取开始时间
     *
     * @param year 年
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getBeginTime(int year) {
        return getBeginTime(year, 1);
    }


    /**
     * 获取结束时间
     *
     * @param year   年
     * @param month  月
     * @param day    日
     * @param hour   时
     * @param minute 分
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getEndTime(int year, int month, int day, int hour, int minute) {
        return getTime(year, month, day, hour, minute, 59);
    }


    /**
     * 获取结束时间
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @param hour  时
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getEndTime(int year, int month, int day, int hour) {
        return getEndTime(year, month, day, hour, 59);
    }


    /**
     * 获取结束时间
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getEndTime(int year, int month, int day) {
        return getEndTime(year, month, day, 23);
    }


    /**
     * 获取结束时间
     *
     * @param year  年
     * @param month 月
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getEndTime(int year, int month) {
        int day = getLastDayOfMonth(year, month);
        return getEndTime(year, month, day);
    }


    /**
     * 获取结束时间
     *
     * @param year 年
     * @return yyyy-MM-dd HH:mm:ss时间
     */
    public static Date getEndTime(int year) {
        return getEndTime(year, 12);
    }


    /**
     * 获取一个月的最后一天
     *
     * @param year  年
     * @param month 月
     * @return 一个月的最后一天的数值
     */
    public static int getLastDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR, year);
        //设置月份
        cal.set(Calendar.MONTH, month - 1);
        //获取某月最大天数
        return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

4.测试

    public static void main(String[] args) {
        System.out.println(getBeginTime(2022));
        System.out.println(getBeginTime(2022, 5));
        System.out.println(getBeginTime(2022, 5, 15));
        System.out.println(getBeginTime(2022, 5, 15, 15));
        System.out.println(getBeginTime(2022, 5, 15, 15, 15));
        System.out.println("----------------------------------------------------------------");
        System.out.println(getEndTime(2022));
        System.out.println(getEndTime(2022, 5));
        System.out.println(getEndTime(2022, 5, 15));
        System.out.println(getEndTime(2022, 5, 15, 15));
        System.out.println(getEndTime(2022, 5, 15, 15, 15));
        System.out.println("----------------------------------------------------------------");
        System.out.println(getTime(2022, 5, 15, 15, 15, 15));
    }

5.结果

Sat Jan 01 00:00:00 CST 2022
Sun May 01 00:00:00 CST 2022
Sun May 15 00:00:00 CST 2022
Sun May 15 15:00:00 CST 2022
Sun May 15 15:15:00 CST 2022
----------------------------------------------------------------
Sat Dec 31 23:59:59 CST 2022
Tue May 31 23:59:59 CST 2022
Sun May 15 23:59:59 CST 2022
Sun May 15 15:59:59 CST 2022
Sun May 15 15:15:59 CST 2022
----------------------------------------------------------------
Sun May 15 15:15:15 CST 2022

6.总结

1.最底层获取时间的方法是getTime方法,能够获取年月日时分秒的时间,最后转成Date
2.重载方法getBeginTime,是获取开始时间
3.重载方法getEndTime,是获取结束时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值