java 日期处理

java 日期处理

java的localDate与Date等相互转换

  • java

    import java.time.*;
    import java.util.Date;
    
    /**
     * @author xxx
     * @create 2018/08/14 14:21
     * @description 日期转换工具类
     */
    public class LocalDateUtil {
    
        /**
         * java.util.Date --> java.time.LocalDateTime
         */
        public static LocalDateTime parseDateToLocalDateTime(Date date) {
            Instant instant = date.toInstant();
            ZoneId zone = ZoneId.systemDefault();
            return LocalDateTime.ofInstant(instant, zone);
        }
    
        /**
         * java.util.Date --> java.time.LocalDate
         */
        public static LocalDate parseDateToLocalDate(Date date) {
            Instant instant = date.toInstant();
            ZoneId zone = ZoneId.systemDefault();
            return LocalDateTime.ofInstant(instant, zone).toLocalDate();
        }
    
        /**
         * java.util.Date --> java.time.LocalTime
         */
        public static LocalTime parseDateToLocalTime(Date date) {
            Instant instant = date.toInstant();
            ZoneId zone = ZoneId.systemDefault();
            return LocalDateTime.ofInstant(instant, zone).toLocalTime();
        }
    
        /**
         * java.time.LocalDateTime --> java.util.Date
         */
        public static Date parseLocalDateTimeToDate(LocalDateTime localDateTime) {
            ZoneId zone = ZoneId.systemDefault();
            return Date.from(localDateTime.atZone(zone).toInstant());
        }
    
        /**
         * java.time.LocalDate --> java.util.Date
         */
        public static Date parseLocalDateToDate(LocalDate localDate) {
            ZoneId zone = ZoneId.systemDefault();
            return Date.from(localDate.atStartOfDay().atZone(zone).toInstant());
        }
    
    }
    

其他

  • 计算两个日期的月数差,多余一天算一个月

    /**
         * 获取两个日期相差的月数
         *
         * @param max 较大的日期
         * @param min 较小的日期
         * @return 如果 max > min 返回月数差, 否则返回 0
         */
    public static int getMonthDiff(Date max, Date min) {
        LocalDate localDateMin = LocalDateUtil.parseDateToLocalDate(min);
        LocalDate localDateMax = LocalDateUtil.parseDateToLocalDate(max);
        // ChronoUnit.MONTHS.between(localDateMin, localDateMax);
        Period period = Period.between(localDateMin, localDateMax);
        int years = period.getYears();
        int months = period.getMonths();
        int days = period.getDays();
        int sum = 0;
        if (years > 0) {
            sum = 12 * years;
        }
        if (months > 0) {
            sum += months;
        }
        if (days > 0) {
            sum += 1; // 存在天数差,算成整一个月
        }
    
        System.out.println("years:" + years + ",months:" + months + ",days:" + days);
    
        return sum;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值