【Java】Jdk8 LocalDate、LocalTime和LocalDateTime

介绍

LocalDate、LocalTime和LocalDateTime是Java 8中引入的日期和时间类,它们都属于java.time包。

  1. LocalDate:表示日期,不包含时间和时区信息。它可以用于存储和操作年、月、日的值。例如,可以使用LocalDate来表示生日、会议日期等。

  2. LocalTime:表示时间,不包含日期和时区信息。它可以用于存储和操作时、分、秒的值。例如,可以使用LocalTime来表示每天的固定时间点,如午夜、中午等。

  3. LocalDateTime:表示日期和时间,不包含时区信息。它是LocalDate和LocalTime的组合。可以使用LocalDateTime来表示具体的日期和时间,例如某个事件发生的时间。

这些类都是不可变的,任何对它们的修改操作都会返回一个新的实例。它们提供了一系列方法用于获取、设置和操作日期和时间的不同部分,以及进行比较、格式化、解析等操作。

需要注意的是,这些类不考虑时区的影响。如果需要处理时区相关的日期和时间,可以使用ZonedDateTime类。

示例

LocalDate:

  • 表示日期,不包含时间和时区信息。它可以用于存储和操作年、月、日的值。
// 获取当前日期
LocalDate currentDate = LocalDate.now();
System.out.println("当前日期: " + currentDate);

// 创建指定日期
LocalDate specificDate = LocalDate.of(2023, 7, 19);
System.out.println("指定日期: " + specificDate);

// 字符串转日期
String dateString = "2023-07-19";
LocalDate parsedDate = LocalDate.parse(dateString);
System.out.println("解析后的日期: " + parsedDate);

// 日期转字符串
String formattedDate = specificDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("格式化后的日期: " + formattedDate);

// 日期加减
LocalDate tomorrow = currentDate.plusDays(1);
LocalDate lastWeek = currentDate.minusWeeks(1);
System.out.println("明天的日期: " + tomorrow);
System.out.println("一周前的日期: " + lastWeek);

// 比较日期
boolean isAfter = specificDate.isAfter(currentDate);
boolean isBefore = specificDate.isBefore(currentDate);
boolean isEqual = specificDate.isEqual(currentDate);
System.out.println("指定日期是否在当前日期之后: " + isAfter);
System.out.println("指定日期是否在当前日期之前: " + isBefore);
System.out.println("指定日期是否等于当前日期: " + isEqual);

LocalTime:

  • LocalTime(时间):表示时间,不包含日期和时区信息。它可以用于存储和操作时、分、秒的值。
// 获取当前时间
LocalTime currentTime = LocalTime.now();
System.out.println("当前时间: " + currentTime);

// 创建指定时间
LocalTime specificTime = LocalTime.of(12, 30, 45);
System.out.println("指定时间: " + specificTime);

// 字符串转时间
String timeString = "12:30:45";
LocalTime parsedTime = LocalTime.parse(timeString);
System.out.println("解析后的时间: " + parsedTime);

// 时间转字符串
String formattedTime = specificTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println("格式化后的时间: " + formattedTime);

// 时间加减
LocalTime nextHour = currentTime.plusHours(1);
LocalTime previousMinute = currentTime.minusMinutes(1);
System.out.println("下一个小时的时间: " + nextHour);
System.out.println("上一分钟的时间: " + previousMinute);

// 比较时间
boolean isAfter = specificTime.isAfter(currentTime);
boolean isBefore = specificTime.isBefore(currentTime);
System.out.println("指定时间是否在当前时间之后: " + isAfter);
System.out.println("指定时间是否在当前时间之前: " + isBefore);

LocalDateTime:

  • LocalDateTime(日期时间):表示日期和时间,不包含时区信息。它是LocalDate和LocalTime的组合。
// 获取当前日期时间
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println("当前日期时间: " + currentDateTime);

// 创建指定日期时间
LocalDateTime specificDateTime = LocalDateTime.of(2023, 7, 19, 12, 30, 45);
System.out.println("指定日期时间: " + specificDateTime);

// 字符串转日期时间
String dateTimeString = "2023-07-19T12:30:45";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString);
System.out.println("解析后的日期时间: " + parsedDateTime);

// 日期时间转字符串
String formattedDateTime = specificDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("格式化后的日期时间: " + formattedDateTime);

// 日期时间加减
LocalDateTime nextWeek = currentDateTime.plusWeeks(1);
LocalDateTime previousMonth = currentDateTime.minusMonths(1);
System.out.println("下一周的日期时间: " + nextWeek);
System.out.println("上个月的日期时间: " + previousMonth);

// 比较日期时间
boolean isAfter = specificDateTime.isAfter(currentDateTime);
boolean isBefore = specificDateTime.isBefore(currentDateTime);
boolean isEqual = specificDateTime.isEqual(currentDateTime);
System.out.println("指定日期时间是否在当前日期时间之后: " + isAfter);
System.out.println("指定日期时间是否在当前日期时间之前: " + isBefore);
System.out.println("指定日期时间是否等于当前日期时间: " + isEqual);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是关于JDK 8日期相关类的介绍和示例: 1. LocalDate类: - LocalDate类表示一个不可变的日期对象,它只包含日期部分(年、月、日)。 - 使用`now()`方法获取当前日期。 - 使用`of()`方法创建指定日期。 - 使用`getXXX()`方法获取日期的年、月、日等部分。 - 使用`plusXXX()`和`minusXXX()`方法进行日期的加减操作。 - 使用`isXXX()`方法判断日期的属性,如是否为闰年等。 示例代码: ```java import java.time.LocalDate; // 获取当前日期 LocalDate currentDate = LocalDate.now(); System.out.println("当前日期: " + currentDate); // 创建指定日期 LocalDate specificDate = LocalDate.of(2022, 1, 1); System.out.println("指定日期: " + specificDate); // 获取日期的年、月、日 int year = currentDate.getYear(); int month = currentDate.getMonthValue(); int day = currentDate.getDayOfMonth(); System.out.println("年: " + year + ", 月: " + month + ", 日: " + day); // 日期的加减操作 LocalDate futureDate = currentDate.plusDays(7); LocalDate pastDate = currentDate.minusMonths(1); System.out.println("未来日期: " + futureDate); System.out.println("过去日期: " + pastDate); // 判断是否为闰年 boolean isLeapYear = currentDate.isLeapYear(); System.out.println("是否为闰年: " + isLeapYear); ``` 2. LocalTime类: - LocalTime类表示一个不可变的时间对象,它只包含时间部分(时、分、秒、纳秒)。 - 使用`now()`方法获取当前时间。 - 使用`of()`方法创建指定时间。 - 使用`getXXX()`方法获取时间的时、分、秒等部分。 - 使用`plusXXX()`和`minusXXX()`方法进行时间的加减操作。 示例代码: ```java import java.time.LocalTime; // 获取当前时间 LocalTime currentTime = LocalTime.now(); System.out.println("当前时间: " + currentTime); // 创建指定时间 LocalTime specificTime = LocalTime.of(12, 30, 0); System.out.println("指定时间: " + specificTime); // 获取时间的时、分、秒 int hour = currentTime.getHour(); int minute = currentTime.getMinute(); int second = currentTime.getSecond(); System.out.println("时: " + hour + ", 分: " + minute + ", 秒: " + second); // 时间的加减操作 LocalTime futureTime = currentTime.plusHours(2); LocalTime pastTime = currentTime.minusMinutes(30); System.out.println("未来时间: " + futureTime); System.out.println("过去时间: " + pastTime); ``` 3. LocalDateTime类: - LocalDateTime类表示一个不可变的日期时间对象,它包含日期和时间部分。 - 使用`now()`方法获取当前日期时间。 - 使用`of()`方法创建指定日期时间。 - 使用`getXXX()`方法获取日期时间的年、月、日、时、分、秒等部分。 - 使用`plusXXX()`和`minusXXX()`方法进行日期时间的加减操作。 示例代码: ```java import java.time.LocalDateTime; // 获取当前日期时间 LocalDateTime currentDateTime = LocalDateTime.now(); System.out.println("当前日期时间: " + currentDateTime); // 创建指定日期时间 LocalDateTime specificDateTime = LocalDateTime.of(2022, 1, 1, 12, 30, 0); System.out.println("指定日期时间: " + specificDateTime); // 获取日期时间的年、月、日、时、分、秒 int year = currentDateTime.getYear(); int month = currentDateTime.getMonthValue(); int day = currentDateTime.getDayOfMonth(); int hour = currentDateTime.getHour(); int minute = currentDateTime.getMinute(); int second = currentDateTime.getSecond(); System.out.println("年: " + year + ", 月: " + month + ", 日: " + day); System.out.println("时: " + hour + ", 分: " + minute + ", 秒: " + second); // 日期时间的加减操作 LocalDateTime futureDateTime = currentDateTime.plusDays(7); LocalDateTime pastDateTime = currentDateTime.minusMonths(1); System.out.println("未来日期时间: " + futureDateTime); System.out.println("过去日期时间: " + pastDateTime); ``` 4. Calendar类: - Calendar类是Java旧版的日期时间处理类,JDK 8之后推荐使用新的日期时间API。 - Calendar类可以用于获取和设置日期时间的各个部分,如年、月、日、时、分、秒等。 - 使用`getInstance()`方法获取当前日期时间的Calendar实例。 - 使用`get()`方法获取日期时间的各个部分。 - 使用`set()`方法设置日期时间的各个部分。 示例代码: ```java import java.util.Calendar; // 获取当前日期时间的Calendar实例 Calendar currentCalendar = Calendar.getInstance(); System.out.println("当前日期时间: " + currentCalendar.getTime()); // 获取日期时间的年、月、日、时、分、秒 int year = currentCalendar.get(Calendar.YEAR); int month = currentCalendar.get(Calendar.MONTH) + 1; // 月份从0开始,需要加1 int day = currentCalendar.get(Calendar.DAY_OF_MONTH); int hour = currentCalendar.get(Calendar.HOUR_OF_DAY); int minute = currentCalendar.get(Calendar.MINUTE); int second = currentCalendar.get(Calendar.SECOND); System.out.println("年: " + year + ", 月: " + month + ", 日: " + day); System.out.println("时: " + hour + ", 分: " + minute + ", 秒: " + second); // 设置日期时间的年、月、日、时、分、秒 currentCalendar.set(Calendar.YEAR, 2022); currentCalendar.set(Calendar.MONTH, 0); // 月份从0开始,0表示1月 currentCalendar.set(Calendar.DAY_OF_MONTH, 1); currentCalendar.set(Calendar.HOUR_OF_DAY, 12); currentCalendar.set(Calendar.MINUTE, 30); currentCalendar.set(Calendar.SECOND, 0); System.out.println("设置后的日期时间: " + currentCalendar.getTime()); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值