jdk1.8新日期时间类(DateTime、LocalDateTime)demo代码

       //获取当前时间
        LocalDateTime d0 = LocalDateTime.now();
        System.out.println(DataConvertUtil.localDateTimeToStr(d0, "yyyy-MM-dd HH:mm:ss"));

        //输入年月日时分秒实例化新的时间对象
        LocalDateTime d1 = LocalDateTime.of(2017, 5, 15, 20, 32, 12);
        System.out.println(DataConvertUtil.localDateTimeToStr(d1, "yyyy-MM-dd HH:mm:ss"));

        //对一个时间对象加5分钟(同理也可加/减,年/月/日/时/分/秒),加是plus,减是minus
        LocalDateTime d2 = d1.plusMinutes(5);
        System.out.println(DataConvertUtil.localDateTimeToStr(d2, "yyyy-MM-dd HH:mm:ss"));

        //对一个时间对象单独设置年月日时分秒
        //把小时设为5点
        LocalDateTime d21 = d2.withHour(5);
        //把小时设为5点,0分,0秒
        d21 = d2.withHour(6).withMinute(0).withSecond(0);
        System.out.println(DataConvertUtil.localDateTimeToStr(d21, "yyyy-MM-dd HH:mm:ss"));

        //获取日(同理也可获取年月日时分秒)
        int day = d2.getDayOfMonth();
        System.out.println(day);

        //判断两个时间的先后,可以用isAfter或isBefore,如下例就是判断d2是否晚于d1
        boolean b1 = d2.isAfter(d1);
        System.out.println(b1);

        //两个时间相减,获取时间差(例子为d2-d1,并获取时间差(单位:分钟))
        //类似Duration的还有Period,Period专用于计算年月日
        Duration duration = Duration.between(d1, d2);
        long m1 = duration.toMinutes();
        System.out.println(m1);

        //Date和LocalDateTime互转
        Date dx1 = DataConvertUtil.localDateTimeToDate(d1);
        LocalDateTime d3 = DataConvertUtil.dateToLocalDateTime(dx1);
        System.out.println(DataConvertUtil.localDateTimeToStr(d3, "yyyy-MM-dd HH:mm:ss"));

        //Date和LocalDate互转
        LocalDate d31 = LocalDate.now();
        dx1 = DataConvertUtil.localDateToDate(d31);
        d31 = DataConvertUtil.dateToLocalDate(dx1);

        //LocalDateTime按指定格式输出string
        //还有可指定输出格式版本localDateTimeToStr(LocalDateTime value, String format)
        String s1 = DataConvertUtil.localDateTimeToStr(d1, "yyyy-MM-dd HH:mm:ss");
        System.out.println("s1=" + s1);

        //string按指定格式转为LocalDateTime
        //还有可指定格式版本strToLocalDateTime(String value, String format)
        LocalDateTime d4 = DataConvertUtil.strToLocalDateTime(s1, "yyyy-MM-dd HH:mm:ss");
        System.out.println(DataConvertUtil.localDateTimeToStr(d4, "yyyy-MM-dd HH:mm:ss"));
        //注意!!!!!
        //由于LocalDateTime类型的限制,字符串转LocalDateTime时字符串值必须完整包含年月日时分秒,而实际情况经常会只有年月日
        //对于这种情况,可以用下例的DataConvertUtil.strToLocalDate转为LocalDate类型,然后再把LocalDate转为LocalDateTime
        String s2 = DataConvertUtil.localDateTimeToStr(d1, "yyyy-MM-dd");
        //字符串转LocalDate
        LocalDate d5 = DataConvertUtil.strToLocalDate(s2, "yyyy-MM-dd");
        System.out.println(DataConvertUtil.localDateToStr(d5));
        //LocalDate转LocalDateTime
        LocalDateTime d6 = LocalDateTime.of(d5, LocalTime.of(0, 0));
        System.out.println(DataConvertUtil.localDateTimeToStr(d6, "yyyy-MM-dd HH:mm:ss"));

//以下补充DataConvertUtil类的相关函数
    /**
     * LocalDateTime转Date
     *
     * @param localDateTime
     * @return
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        if (localDateTime == null) return null;

        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * Date转LocalDateTime
     *
     * @param date
     * @return
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        if (date == null) return null;

        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    }

    /**
     * LocalDate转Date
     *
     * @param localDate
     * @return
     */
    public static Date localDateToDate(LocalDate localDate) {
        if (localDate == null) return null;

        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    }

    /**
     * Date转LocalDate
     *
     * @param date
     * @return
     */
    public static LocalDate dateToLocalDate(Date date) {
        if (date == null) return null;

        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * 日期时间(LocalDateTime)按默认格式转字符串
     *
     * @param value
     * @return
     */
    public static String localDateTimeToStr(LocalDateTime value) {
        return localDateTimeToStr(value, "yyyy-MM-dd");
    }

    /**
     * 日期时间(LocalDateTime)按指定格式转字符串
     *
     * @param value
     * @param format
     * @return
     */
    public static String localDateTimeToStr(LocalDateTime value, String format) {
        String dateString;
        if (value == null) {
            dateString = "";
        } else {
            DateTimeFormatter formatDate = DateTimeFormatter.ofPattern(format);
            dateString = value.format(formatDate);
        }

        return dateString;
    }

    /**
     * 字符串按默认格式转日期时间(LocalDateTime)
     *
     * @param value
     * @return
     */
    public static LocalDateTime strToLocalDateTime(String value) {
        return strToLocalDateTime(value, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 字符串按指定格式转日期时间(LocalDateTime)
     *
     * @param value
     * @param format
     * @return
     */
    public static LocalDateTime strToLocalDateTime(String value, String format) {
        if (value != null && value.trim().length() > 0) {
            DateTimeFormatter formatDate = DateTimeFormatter.ofPattern(format);

            try {
                return LocalDateTime.parse(value, formatDate);
            } catch (Exception e) {
                return null;
            }
        }

        return null;
    }

转载于:https://www.cnblogs.com/cannel/p/11074411.html

原文地址:https://www.cnblogs.com/twodog/p/12134802.html