localDateTime与Date转化

LocalDateTime、LocalDate、Date 在数据库中可以选择时间类型 datetime,date
注意:
LocalDateTime、LocalDate可以与mybatis结合使用,但需要注意mysql版本

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.43</version>
        </dependency>

Date 和 SimpleDateFormat 都是线程不安全的
LocalDateTime 和 DateTimeFormatter 都是线程安全的

//格式化时间日期
LocalDateTime dt = LocalDateTime.now(); 
String str = dt.format(DateTimeFormatter.ISO_DATE);
String str1 = dt.format(DateTimeFormatter.BASIC_ISO_DATE);
String str2 = dt.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
String str3 = dt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//str 2020-06-27
//str1 20200627
//str2 2020/06/27
//str3 2020-06-27 11:11:11
// 减使用minus
dt.minusYears(1L);
// 加使用plus
dt.plusMonths(5);
// 直接修改使用with
dt.withYear(2022);

//当天最大时间 2020-06-27 23:59:59
dt.with(LocalTime.MAX);
//当天最小时间 2020-06-27 00:00:00
dt.with(LocalTime.MIN);

Month month = dt.getMonth();
System.out.println(month);//JUNE
System.out.println(month.getValue());//6

//方法withNano(),直接舍弃纳秒
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
System.out.println(now.withNano(0));

//查看LocalDateTime相差天数
long days = Duration.between(LocalDateTime.now(),LocalDateTime.now()).toDays();
//查询LocalDate相差天数
long days = ChronoUnit.DAYS.between(endDate,startDate);

//localdate转localdatetime
LocalDate date = LocalDate.now();
// 创建一个默认的LocalTime实例,通常是午夜时间00:00
LocalTime time = LocalTime.MIDNIGHT;
LocalDateTime dateTime = LocalDateTime.of(date, time);
    /**
     * 日期转为LocalDateTime
     *
     * @param date 日期
     * @return LocalDateTime
     */
    public static LocalDateTime dateToLocalDateTime(final Date date) {
        if (null == date) {
            return null;
        }
        final Instant instant = date.toInstant();
        final ZoneId zoneId = ZoneId.systemDefault();
        final LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
        return localDateTime;
    }
    /**
     * 日期转为LocalDate
     *
     * @param date 日期
     * @return LocalDateTime
     */
    public static LocalDate dateToLocalDate(final Date date) {
        if (null == date) {
            return null;
        }
        final Instant instant = date.toInstant();
        final ZoneId zoneId = ZoneId.systemDefault();
        final LocalDate localDate = instant.atZone(zoneId).toLocalDate();
        return localDate;
    }

    /**
     * LocalDateTime转为日期
     *
     * @param localDateTime LocalDateTime
     * @return 日期
     */
    public static Date localDateTimeToDate(final LocalDateTime localDateTime) {
        if (null == localDateTime) {
            return null;
        }
        final ZoneId zoneId = ZoneId.systemDefault();
        final ZonedDateTime zdt = localDateTime.atZone(zoneId);
        final Date date = Date.from(zdt.toInstant());
        return date;
    }

    /**
     * LocalDate转为日期
     *
     * @param localDate
     * @return
     */
    public static Date localDateToDate(final LocalDate localDate) {
        if (null == localDate) {
            return null;
        }
        final ZoneId zoneId = ZoneId.systemDefault();
        final ZonedDateTime zdt = localDate.atStartOfDay().atZone(zoneId);
        final Date date = Date.from(zdt.toInstant());
        return date;
    }
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值