JAVA常用的日期工具类

public class DateCommonUtils {

    /**
     * 取出两个日期的合集
     *
     * @param beginDate
     * @param endDate
     * @return
     * @throws ParseException
     */
    public static List<String> getDayBySpace(String beginDate, String endDate) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        List<String> days = new ArrayList<String>();
        Date start = format.parse(beginDate);
        Date end = format.parse(endDate);
        Calendar tempStart = Calendar.getInstance();
        tempStart.setTime(start);
        Calendar tempEnd = Calendar.getInstance();
        tempEnd.setTime(end);
        tempEnd.add(Calendar.DATE, +1);
        while (tempStart.before(tempEnd)) {
            days.add(format.format(tempStart.getTime()));
            tempStart.add(Calendar.DAY_OF_YEAR, 1);
        }
        return days;
    }

    /**
     * 时间戳转 localDateTime
     *
     * @param longTime
     * @return
     */
    public static LocalDateTime long2LocalDateTime(Long longTime) {
        return LocalDateTime.ofInstant(Instant.ofEpochMilli(longTime), ZoneId.systemDefault());
    }

    /**
     * 时间戳转 localDate
     *
     * @param longTime
     * @return
     */
    public static LocalDate long2LocalDate(Long longTime) {
        return LocalDateTime.ofInstant(Instant.ofEpochMilli(longTime), ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * String 转 localDate
     *
     * @param dateTime
     * @param formatter
     * @return
     */
    public static LocalDate string2LocalDate(String dateTime, String formatter) {
        return LocalDate.parse(dateTime, DateTimeFormatter.ofPattern(formatter));
    }

    /**
     * String 转 localDateTime
     *
     * @param dateTime
     * @param formatter
     * @return
     */
    public static LocalDateTime string2LocalDateTime(String dateTime, String formatter) {
        return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(formatter));
    }

    /**
     * localDateTime 2 long
     *
     * @param localDateTime
     * @return
     */
    public static Long localDateTime2Long(LocalDateTime localDateTime) {
        return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * localDate 2 long
     *
     * @param localDate
     * @return
     */
    public static Long localDate2Long(LocalDate localDate) {
        return localDate.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    public static Date localDate2Date(LocalDate localDate) {
        ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

    /**
     * 比较时间与当前时间距离几个月
     *
     * @param afterDate  后时间
     * @param beforeDate 前时间
     * @return
     */
    public static int compareWithNow(String beforeDate, String afterDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        String afferentYearMonth = string2LocalDate(afterDate, "yyyy-MM-dd").format(DateTimeFormatter.ofPattern("yyyy-MM"));
        String nowYearMonth = string2LocalDate(beforeDate, "yyyy-MM-dd").format(DateTimeFormatter.ofPattern("yyyy-MM"));
        Calendar afferent = Calendar.getInstance();
        Calendar now = Calendar.getInstance();
        try {
            afferent.setTime(sdf.parse(afferentYearMonth));
            now.setTime(sdf.parse(nowYearMonth));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int year = (now.get(Calendar.YEAR) - afferent.get(Calendar.YEAR)) * 12;
        int month = now.get(Calendar.MONTH) - afferent.get(Calendar.MONTH);
        return Math.abs(year + month);
    }

    /**
     * 获取月份最后一天
     *
     * @return
     */
    public static Date getMonthMaxDate(String date) {
        Calendar calendar2 = Calendar.getInstance();
        calendar2.setTime(localDate2Date(string2LocalDate(date, "yyyy-MM-dd")));
        calendar2.set(Calendar.DAY_OF_MONTH, calendar2.getActualMaximum(Calendar.DAY_OF_MONTH));
        return calendar2.getTime();
    }

    /**
     * 获取月份第一天
     *
     * @return
     */
    public static Date getMonthMinDate(String date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(localDate2Date(string2LocalDate(date, "yyyy-MM-dd")));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));

        return calendar.getTime();
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值