Java日期方法工具类

不 定 时 更 新 ~

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

/**
 * @Author: zhangximing
 * @Email: 530659058@qq.com
 * @Date: 2023/10/10 11:41
 * @Description: 日期工具类
 */
public class DateUtils {

    /**
     * 获取提前多少小时的日期时间
     * @param hour
     * @return
     */
    public static String getBeforeByHourTime(int hour){

        String returnstr = "";

        Calendar calendar = Calendar.getInstance();

        calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - hour);

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");

        returnstr = df.format(calendar.getTime());

        return returnstr;

    }

    /**
     * 提前多少天
     * @param days
     * @return
     */
    public static String getBeforeDays(int days) {

        String returnstr = "";

        Calendar calendar = Calendar.getInstance();

        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - days);

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        returnstr = df.format(calendar.getTime());

        return returnstr;
    }

    /**
     * 获取本月第一天
     * @return
     */
    public static String getCurrentMonthFirstDay(){
        // 获取当前日期
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        // 将日期设置为第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 获取本月第一天的日期
        Date currentMonthFirstDay = calendar.getTime();

        return sdf.format(currentMonthFirstDay);
    }

    /**
     * 获取指定日期的上个月第一天日期
     * @param currentMonthFirstDay
     * @return
     */
    public static String getLastMonthFirstDay(String currentMonthFirstDay){
        // 获取当前日期
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date date = null;
        try {
            date = sdf.parse(currentMonthFirstDay);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        calendar.setTime(date);

        // 将日期设置为上个月
        calendar.add(Calendar.MONTH, -1);

        // 将日期设置为第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 获取上个月第一天的日期
        Date lastMonthFirstDay = calendar.getTime();

        return sdf.format(lastMonthFirstDay);
    }

	/**
     * 获取具体日期那周某星期几日期
     * SUNDAY = 1
     * MONDAY = 2  Calendar.MONDAY
     * TUESDAY = 3
     * WEDNESDAY = 4
     * THURSDAY = 5
     * FRIDAY = 6
     * SATURDAY = 7
     * @param date
     * @param dayOfWeek
     * @return
     */
    public static String getCurrentWeekDay(String date, int dayOfWeek){
        //设置日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = null;
        try {
            parse = df.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar cld = Calendar.getInstance();
        cld.setTime(parse);
        cld.setFirstDayOfWeek(Calendar.MONDAY);//以周一为首日

        cld.set(Calendar.DAY_OF_WEEK, dayOfWeek);//周一

        return df.format(cld.getTime());
    }

	/**
     * 获取前多少个月的第一天日期
     * @return
     */
    public String getLastNumMonthFirstDay(int lastMonthNum){
        // 获取当前日期
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        // 将日期设置为前几月
        calendar.add(Calendar.MONTH, -lastMonthNum);

        // 将日期设置为第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 获取第一天的日期
        Date lastNumMonthFirstDay = calendar.getTime();

        return sdf.format(lastNumMonthFirstDay);
    }

    /**
     * 获取本月最后一天
     * @return
     */
    public String getCurrentMonthLastDay(){
        // 获取当前月份
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        String currentMonth = sdf.format(date);
        // 获取当前月份的最后一天日期
        int lastDay = getLastDayOfMonth(currentMonth);

        return currentMonth + "-" + lastDay;
    }

    /**
     * 获取某月最后一天
     * @param month
     * @return
     */
    public int getLastDayOfMonth(String month) {
        int year = Integer.parseInt(month.substring(0, 4));
        int monthValue = Integer.parseInt(month.substring(5));
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, monthValue - 1, 1);
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取指定日期的上个月第一天或最后一天日期
     * @param currentMonthFirstDay
     * @param firstOrLast 0第一天 ,1最后一天
     * @return
     */
    public String getLastMonthFirstOrLastDay(String currentMonthFirstDay,int firstOrLast){
        // 获取当前日期
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date date = null;
        try {
            date = sdf.parse(currentMonthFirstDay);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        calendar.setTime(date);

        // 将日期设置为上个月
        calendar.add(Calendar.MONTH, -1);

        // 将日期设置为第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 获取上个月第一天的日期
        Date lastMonthFirstDay = calendar.getTime();

        // 若最后一天
        if (firstOrLast == 1){
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
            String currentMonth = sdf1.format(lastMonthFirstDay);
            // 获取当前月份的最后一天日期
            int lastDay = getLastDayOfMonth(currentMonth);

            return currentMonth + "-" + lastDay;
        }

        return sdf.format(lastMonthFirstDay);
    }
}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谦风(Java)

一起学习,一起进步(✪ω✪)

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

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

打赏作者

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

抵扣说明:

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

余额充值