时间Date工具类

时间工具类

    private static final String DATE_PATTERN = "yyyy-MM-dd";
    private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    
    private static final String DATETIME_SSS_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";
    private static final String DATETIME_UNSIGNED_FORMAT = "yyyyMMddHHmmss";
    private static final String DATE_UNSIGNED_FORMAT = "yyyyMMdd";
    private static final String DATETIME2_PATTERN = "yyyy-MM-dd HH:mm";

    /**
     * 给指定日期(yyyy-MM-dd HH:mm:ss)加上指定的天数
     *
     * @param dateTime
     * @param days
     * @return
     * @throws ParseException
     */
    public static String dateTimePlusDays(String dateTime, int days) {
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat(DATETIME_PATTERN);
            Date date = dateFormat.parse(dateTime);
            Calendar ca = Calendar.getInstance();
            ca.setTime(date);
            ca.add(Calendar.DATE, days);
            return dateFormat.format(ca.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateTime;
    }

    /**
     * 给指定日期(yyyy-MM-dd)加上指定的天数
     *
     * @param dateTime
     * @param days
     * @return
     * @throws ParseException
     */
    public static String datePlusDays(String dateTime, int days) {
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
            Date date = dateFormat.parse(dateTime);
            Calendar ca = Calendar.getInstance();
            ca.setTime(date);
            ca.add(Calendar.DATE, days);
            return dateFormat.format(ca.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateTime;
    }

    /**
     * 给指定时间 加上指定 分钟
     *
     * @param minutes
     * @return
     */
    public static String currentDateTimePlusMinutes(int minutes) {
        return DateTime.now().plusMinutes(minutes).toString(DATETIME_PATTERN);
    }

    /**
     * 判断两个指定的日期是否相等
     *
     * @param date1
     * @param date2
     * @return
     */
    public static boolean dateIsEqual(String date1, String date2) {
        DateTime d1 = new DateTime(date1);
        DateTime d2 = new DateTime(date2);
        return d1.isEqual(d2);
    }

    /**
     * 计算两个日期之间相差的天数
     *
     * @param day1 yyyy-MM-dd HH:mm:ss
     * @param day2 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static int dayTimesOf2Day(String day1, String day2) {
        DateTime begin = DateTime.parse(day1, DateTimeFormat.forPattern(DATETIME_PATTERN));
        DateTime end = DateTime.parse(day2, DateTimeFormat.forPattern(DATETIME_PATTERN));
        Period p = new Period(begin, end, PeriodType.days());
        return p.getDays();
    }

    /**
     * 计算两个日期之间相差的年数
     *
     * @param day1 yyyy-MM-dd HH:mm:ss
     * @param day2 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static int daysOfYears(String day1, String day2) {
        DateTime begin = DateTime.parse(day1, DateTimeFormat.forPattern(DATETIME_PATTERN));
        DateTime end = DateTime.parse(day2, DateTimeFormat.forPattern(DATETIME_PATTERN));
        Period p = new Period(begin, end, PeriodType.years());
        return p.getYears();
    }

    /**
     * 计算两个日期之间相差的月数
     *
     * @param day1 yyyy-MM-dd
     * @param day2 yyyy-MM-dd
     * @return
     */
    public static int daysOfMonth(String day1, String day2) {
        DateTime begin = DateTime.parse(day1, DateTimeFormat.forPattern(DATE_PATTERN));
        DateTime end = DateTime.parse(day2, DateTimeFormat.forPattern(DATE_PATTERN));
        Period p = new Period(begin, end, PeriodType.months());
        return p.getMonths();
    }

    /**
     * 计算两个日期之间的毫秒数
     *
     * @param day1 yyyy-MM-dd HH:mm:ss
     * @param day2 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static long get2DaysMillis(String day1, String day2) {
        DateTime begin = DateTime.parse(day1, DateTimeFormat.forPattern(DATETIME_PATTERN));
        DateTime end = DateTime.parse(day2, DateTimeFormat.forPattern(DATETIME_PATTERN));
        Duration d = new Duration(begin, end);
        return d.getMillis();
    }

    /**
     * 计算两个日期之间的毫秒数
     *
     * @param day1 yyyy-MM-dd HH:mm:ss
     * @param day2 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static long get2DaysMillis(String day1, String day2) {
        DateTime begin = DateTime.parse(day1, DateTimeFormat.forPattern(DATETIME_PATTERN));
        DateTime end = DateTime.parse(day2, DateTimeFormat.forPattern(DATETIME_PATTERN));
        Duration d = new Duration(begin, end);
        return d.getMillis();
    }

    /**
     * 计算两个日期之间的分钟数
     *
     * @param day1 yyyy-MM-dd HH:mm:ss
     * @param day2 yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static long get2DaysMinutes(String day1, String day2) {
        DateTime begin = DateTime.parse(day2, DateTimeFormat.forPattern(DATETIME_PATTERN));
        DateTime end = DateTime.parse(day1, DateTimeFormat.forPattern(DATETIME_PATTERN));
        Duration d = new Duration(begin, end);
        return d.getStandardMinutes();
    }

    /**
     * 获取指定日期的星期
     *
     * @param dateStr 2019-05-01
     * @return
     */
    public static String getDayOfWeek(String dateStr) {
        String currentWeek = "";
        DateTime dt = new DateTime(dateStr);
        switch (dt.getDayOfWeek()) {
            case DateTimeConstants.SUNDAY:
                currentWeek = "星期日";
                break;
            case DateTimeConstants.MONDAY:
                currentWeek = "星期一";
                break;
            case DateTimeConstants.TUESDAY:
                currentWeek = "星期二";
                break;
            case DateTimeConstants.WEDNESDAY:
                currentWeek = "星期三";
                break;
            case DateTimeConstants.THURSDAY:
                currentWeek = "星期四";
                break;
            case DateTimeConstants.FRIDAY:
                currentWeek = "星期五";
                break;
            case DateTimeConstants.SATURDAY:
                currentWeek = "星期六";
                break;
            default:
                break;
        }
        return currentWeek;
    }

    /**
     * 获取指定日期的星期
     *
     * @param dateStr 2019-05-01
     * @return 1-7
     */
    public static Integer getDayOfWeekNum(String dateStr) {
        DateTime dt = new DateTime(dateStr);
        return dt.getDayOfWeek();
    }

    /**
     * 将字符串日期转为Date对象
     *
     * @param dateStr
     * @param pattern
     * @return
     * @throws ParseException
     */
    public static Date formatDate(String dateStr, String pattern) {
        DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);
        DateTime fromDate = DateTime.parse(dateStr, formatter);
        return fromDate.toDate();
    }

   /**
     * 获取当前日期的周一
     *
     * @param date
     * @return
     */
    public static String getMondayOfDate(String date) {
        //获取当前日期
        LocalDate currentDate = LocalDate.parse(date);
        //计算当前日期是星期几
        DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
        //判断星期几是否大于1(如果当前日期不是本周的第一天,需要计算第一天的偏移量)
        int offset = DayOfWeek.MONDAY.getValue() - dayOfWeek.getValue();
        //计算本周的第一天
        LocalDate firstDayOfWeek = currentDate.plusDays(offset);
        return firstDayOfWeek.toString();
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值