我的JAVA笔记之日期工具类

我的JAVA笔记之日期工具类


上代码:

public class DateUtils {
     //获取最近一年的月份[2019-07,2019-08,2019-09.....]
    public static List<String> getThisYearMonths(){
        List<String> months = new ArrayList<>();
        //获取日历对象
        Calendar calendar = Calendar.getInstance();
        //调整月份到 12个月以前
        calendar.add(Calendar.MONTH, -12);
        /**
         * 循环12 次,获取 12个月份
         */
        for (int i = 0; i < 12; i++) {
            //把日历转换为date
            Date date = calendar.getTime();
            //再把date转换为字符串
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String dateStr = sdf.format(date);
            months.add(dateStr);
            //循环一次,增长一个月
            calendar.add(Calendar.MONTH, 1);
        }
        return months;
    }


    //string格式日期转为Date日期格式
    public static Date parseString2Date(String dateStr)  {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }


    //date日期格式转为String日期格式
    public static String parseDate2String(Date orderDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String str = sdf.format(orderDate);
        return str;
    }


    //将日期转为指定格式的String
    public static String parseDate2String(Date orderDate, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String str = sdf.format(orderDate);
        return str;
    }


    //获取本周第一天,西方人的习惯: 周日为第一天,周六为最后一天
    public static Date getThisWeekFirstDay(){
        //日历对象
        Calendar calendar = Calendar.getInstance();
        int i = calendar.get(Calendar.DAY_OF_WEEK);
        if(i == 1){
            //说明为周日, 往前减 6天
            calendar.add(Calendar.DAY_OF_MONTH, -6);
        }else{
            calendar.add(Calendar.DAY_OF_MONTH, -(i - 2));
        }
        return calendar.getTime();
    }


    //获取本周最后一天
    public static Date getThisWeekLastDay(){
        //日历对象
        Calendar calendar = Calendar.getInstance();
        int i = calendar.get(Calendar.DAY_OF_WEEK);
        if(i == 1){
            //说明就是周日
            return calendar.getTime();
        }else{
            calendar.add(Calendar.DAY_OF_MONTH, (8 - i));
            return calendar.getTime();
        }
    }


    //获取本月第一天
    public static Date thisMonthFirstDay(){
        //当前日期
        Calendar calendar = Calendar.getInstance();
        //设置为1号
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.getTime();
    }


    //获取本月最后一天
    public static Date thisMonthLastDay(){
        //当前日期
        Calendar calendar = Calendar.getInstance();
        //设置为1号
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        //调整为下月1号
        calendar.add(Calendar.MONTH, 1);
        //再调整为前一天(为本月最后天)
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        return calendar.getTime();
    }


    //获取传入月份的最后一天
    public static Date getThisMonthLastDay(String thisMonthFirstDay){
        try {
            //把本月第一天的日期字符串转换为日期类型
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(thisMonthFirstDay);
            //获取日历对象
            Calendar calendar = Calendar.getInstance();
            //设置日历为 本月第一天
            calendar.setTime(date);
            //设置下月第一天
            calendar.add(Calendar.MONTH, 1);
            //调整为前一天, 为本月最后一天
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            return calendar.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

欢迎批评指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值