Java获取当天、本周、本月 开始及结束时间(Calendar.getInstance())

Java获取当天、本周、本月 开始及结束时间(Calendar.getInstance())

package test2.java关系型运算符;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Java获取当天、本周、本月 开始及结束时间(Calendar.getInstance())
 */
public class Test4 {
    public static void main(String[] args) {
        System.out.println("时间为:\n" + getDate1()
                + "\n" + getDate2()
                + "\n" + getDate3()
                + "\n" + getDate4()
                + "\n" + getDate5()
                + "\n" + getMonthFirstDay(2019, -1)
                + "\n" + getNestLastMin(5)
                + "\n" + getLastDay("2019-05-01", 5)
                + "\n" + getMonthLastDay(2019, -1));
    }

    /*
     * Calendar.HOUR_OF_DAY     24小时制
     * Calendar.HOUR     12小时制
     */

    /**
     * 获取当天0点时间
     */
    public static String getDate1() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 0);//控制时
        cal.set(Calendar.MINUTE, 0);//控制分
        cal.set(Calendar.SECOND, 0);//控制秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(cal.getTime());
    }

    /**
     * 获取当天12点时间
     */
    public static String getDate2() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 12);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(cal.getTime());
    }

    /**
     * 获取本周一0点时间
     */
    public static String getDate3() {
        Calendar cal = Calendar.getInstance();
        // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(cal.getTime());
    }

    /**
     * 获取本月第一天0点时间
     */
    public static String getDate4() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(cal.getTime());
    }

    /**
     * 获得本月最后一天24点时间
     */
    public static String getDate5() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        cal.set(Calendar.HOUR_OF_DAY, 24);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(cal.getTime());
    }

    /**
     * 获取指定年月的第一天,如果参数格式错误,则重置成当前月份的第一天
     */
    public static String getMonthFirstDay(int year, int month) {
        Calendar cal = Calendar.getInstance();
        if (month > 0 && month <= 12 && year > 0) {
            //设置年份
            cal.set(Calendar.YEAR, year);
            //设置月份
            cal.set(Calendar.MONTH, month - 1);
            //设置日历中月份的最小天数
            cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
            //格式化日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(cal.getTime());
        } else {
            //设置当前年月日
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH));
            //将日时间设置成本月第一天
            cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DAY_OF_MONTH));
            //格式化日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(cal.getTime());
        }
    }

    /**
     * 获取指定年月的最后一天,如果参数格式错误,则重置成当前月份的最后一天
     */
    public static String getMonthLastDay(int year, int month) {
        Calendar cal = Calendar.getInstance();
        if (month > 0 && month <= 12 && year > 0) {
            //设置年份
            cal.set(Calendar.YEAR, year);
            //设置月份
            cal.set(Calendar.MONTH, month - 1);
            //设置日历中月份的最大天数
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
            //格式化日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(cal.getTime());
        } else {
            //设置当前年月日
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH));
            //将日时间设置成本月最后一天
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            //格式化日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(cal.getTime());
        }
    }

    /**
     * 获取当前时间之:前1分钟的时间
     */
    public static String getNestLastMin(int min) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.MINUTE, min); //数字参数可修改,+表示n分钟之后,-表示n分钟之前的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("前一分钟:" + sdf.format(cal.getTime()));
        return sdf.format(cal.getTime());
    }

    /**
     * 获取当前时间之:前一周的时间
     */
    public static String getNestLastWeek(String pattern, int day) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.DATE, day); //数字参数可修改,+表示n天之后,-表示n天之前的时间
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        System.out.println("前七天时间:" + sdf.format(cal.getTime()));
        return sdf.format(cal.getTime());
    }

    /**
     * 获取当前时间之:前一个月的时间
     */
    public static String getNestLastMonth(String pattern, int mon) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.MONTH, mon); //数字参数可修改,+表示n月之后,-表示n月之前的时间
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        System.out.println("前一个月时间:" + sdf.format(cal.getTime()));
        return sdf.format(cal.getTime());
    }

    /**
     * 获取当前时间之:前一年的时间
     *
     * @param pattern 自定义格式化输出时间,比如:"yyyy-MM-dd HH:mm:ss"
     * @param year    时间间隔,比如:-1/+1
     */
    public static String getNestLastYear(String pattern, int year) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.YEAR, -1); //数字参数可修改,+表示n年之后,-表示n年之前的时间
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        System.out.println("前一年时间:" + sdf.format(cal.getTime()));
        return sdf.format(cal.getTime());
    }

    /**
     * 根据指定日期,获取前一天或者后一天时间
     */
    public static String getLastDay(String date, int day) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date dateTem;
        try {
            dateTem = sdf.parse(date);
            cal.setTime(dateTem);
            cal.add(Calendar.DATE, day); //数字参数可修改,+表示n天之后,-表示n天之前的时间
            System.out.println("前一天时间:" + sdf.format(cal.getTime()));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return sdf.format(cal.getTime());
    }

}

运行结果:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" "-javaagent:D:\software\IntelliJ IDEA 2020.3\lib\idea_rt.jar=62088:D:\software\IntelliJ IDEA 2020.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\rt.jar;D:\idea-workspace\untitledTest\out\production\untitledTest;D:\Users\maven-repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\Users\maven-repository\com\baomidou\mybatis-plus-annotation\3.1.0\mybatis-plus-annotation-3.1.0.jar" test2.java关系型运算符.Test4
前一分钟:2021-03-01 10:44:48
前一天时间:2019-05-06
时间为:
2021-03-01 00:00:00
2021-03-01 12:00:00
2021-03-01 00:00:00
2021-03-01 00:00:00
2021-04-01 00:00:00
2021-03-01
2021-03-01 10:44:48
2019-05-06
2021-03-31

进程已结束,退出代码0

补充

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间
 
        //获取年
        int year = c.get(Calendar.YEAR);
        //获取月份,0表示1月份
        int month = c.get(Calendar.MONTH) + 1;
        //获取当前天数
        int day = c.get(Calendar.DAY_OF_MONTH);
        //获取本月最小天数
        int first = c.getActualMinimum(Calendar.DAY_OF_MONTH);
        //获取本月最大天数
        int last = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        //获取当前小时
        int time = c.get(Calendar.HOUR_OF_DAY);
        //获取当前分钟
        int min = c.get(Calendar.MINUTE);
        //获取当前秒
        int sec = c.get(Calendar.SECOND);                                                     
 
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
        String curDate = s.format(c.getTime());                                      //当前日期
        System.out.println("当前时间:" + year + "-" + month + "-" + day + " " + time + ":" + min + ":" + sec);
        System.out.println("第一天和最后天:" + first +"," + last);
        System.out.println("当前日期:" + curDate);
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java-version

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值