Java8:LocalDate LocalDateTime Date相互转化

概述

时间日期处理是平时工作中使用非常频繁的逻辑,Java8中提供的新的时间类LocalDateTime和LocalDate,使日期处理可以更简单。
友情提醒下,业务开发中最好默认使用LocalDateTime,因为LocalDateTime可以很方便的转换为LocalDate,但是LocalDate是不可以转为LocalDateTime的,会没有时分秒的数据!!!

实例

public static void main(String[] args) {
        String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        // 结果:当前年月日时分秒:2020-12-07 09:01:09
        System.out.println("当前年月日时分秒:" + currentDate);

        /*
         * 在当前日期上加减,N年,N月,N天,N小时,N分钟,N秒...
         * 减:minusXXX
         * 加:plusXXX
         */
        LocalDate date = LocalDateTime.now().minusYears(1).toLocalDate();
        // 结果:去年今天日期:2019-12-07
        System.out.println("去年今天日期:" + date);

        date = LocalDateTime.now().plusYears(1).toLocalDate();
        // 结果:明年年今天日期:2021-12-07
        System.out.println("明年今天日期:" + date);

        date = LocalDateTime.now().minusMonths(1).toLocalDate();
        // 结果:今年上个月日期:2020-11-07
        System.out.println("今年上个月日期:" + date);

        date = LocalDateTime.now().minusDays(1).toLocalDate();
        // 结果:昨天日期:2020-12-06
        System.out.println("昨天日期:" + date);

        LocalDateTime localDateTime = LocalDateTime.now().minusHours(1);
        // 结果:上一个小时日期:2020-12-07T08:01:09.074
        System.out.println("上一个小时日期:" + localDateTime);

        /*
         * 获取上周的周几
         */
        LocalDate monday = LocalDate.now().minusWeeks(1).with(DayOfWeek.MONDAY);
        // 结果:上周周一日期:2020-11-30
        System.out.println("上周周一日期:"+monday);

        /*
         * 当前时间是星期几,这个月几号,今年的第几天
         */
        LocalDateTime now = LocalDateTime.now();
        // 结果:当天是这周的第几天:MONDAY
        System.out.println("当天是这周的第几天:"+now.getDayOfWeek());
        // 结果:当前日期是这个月的第几天:7
        System.out.println("当前日期是这个月的第几天:"+now.getDayOfMonth());
        // 结果:当前日期是今年的第几天:342
        System.out.println("当前日期是今年的第几天:"+now.getDayOfYear());
    }

LocalDate LocalDateTime Date相互转化

// 01. java.util.Date --> java.time.LocalDateTime

public void UDateToLocalDateTime() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
}

// 02. java.util.Date --> java.time.LocalDate

public void UDateToLocalDate() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalDate localDate = localDateTime.toLocalDate();
}

// 03. java.util.Date --> java.time.LocalTime

public void UDateToLocalTime() {
java.util.Date date = new java.util.Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalTime localTime = localDateTime.toLocalTime();
}

// 04. java.time.LocalDateTime --> java.util.Date

public void LocalDateTimeToUdate() {
LocalDateTime localDateTime = LocalDateTime.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}

// 05. java.time.LocalDate --> java.util.Date

public void LocalDateToUdate() {
LocalDate localDate = LocalDate.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}

// 06. java.time.LocalTime --> java.util.Date

public void LocalTimeToUdate() {
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
**LocalDateLocalDateTime之间的转化主要涉及日期和时间的操作。** 首先,了解这两个类的定义: - **LocalDate**: 表示没有时间的日期(年、月、日)。 - **LocalDateTime**: 表示日期和时间的组合。 以下是一些常见的换操作: 1. **从LocalDateLocalDateTime**: 要将`LocalDate`换为`LocalDateTime`,您需要提供一个`LocalTime`实例。例如,如果您有一个代表当前日期的`LocalDate`实例,并且想要将其换为当天午夜开始的`LocalDateTime`,可以使用`LocalTime.MIDNIGHT`常量。代码示例如下: ```java LocalDate date = LocalDate.now(); LocalDateTime dateTime = LocalDateTime.of(date, LocalTime.MIDNIGHT); ``` 2. **从LocalDateTimeLocalDate**: 要从`LocalDateTime`获取`LocalDate`,可以简单地调用`toLocalDate()`方法。这将丢弃时间部分,只保留日期。代码示例如下: ```java LocalDateTime dateTime = LocalDateTime.now(); LocalDate date = dateTime.toLocalDate(); ``` 3. **格式化输出**: 如果您需要将`LocalDate`或`LocalDateTime`换为字符串,可以使用`DateTimeFormatter`类来指定输出格式。例如,要将日期格式化为"yyyy-MM-dd",可以使用以下代码: ```java DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateStr = date.format(fmt); ``` 4. **解析输入**: 如果您有日期或日期时间的字符串表示,并希望将其换为`LocalDate`或`LocalDateTime`对象,也可以使用`DateTimeFormatter`的`parse`方法。例如: ```java LocalDate parsedDate = LocalDate.parse("2021-06-15", fmt); ``` 请注意,这些换不涉及任何时区信息,因为`LocalDate`和`LocalDateTime`都是不可变的且不包含时区的日期和日期时间对象。如果需要处理时区,您应该使用`ZonedDateTime`或`OffsetDateTime`类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿在京

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值