ToB企服应用市场:ToB评测及商务社交产业平台

标题: 时间处理的未来:Java 8全新日期与时间API完全剖析 [打印本页]

作者: 守听    时间: 2024-7-10 22:52
标题: 时间处理的未来:Java 8全新日期与时间API完全剖析


  
一、改进背景

   Java 8针对时间处理进行了全面的改进,重新筹划了全部日期时间、日历实时区相干的 API。并把它们都同一放置在 java.time 包和子包下。
  Java5的不敷之处
Java8的改进方案
二、当地日期时间

三、时区日期时间

   在Java 8的新日期时间API中,除了处理当地日期时间外,还引入了处理时区日期时间的类,主要是 ZonedDateTime 和 ZoneId。
  
  1. import java.time.*;
  2. public class ZonedDateTimeExample {
  3.     public static void main(String[] args) {
  4.         // 获取当前日期时间
  5.         LocalDateTime localDateTime = LocalDateTime.now();
  6.         // 创建 ZonedDateTime 对象
  7.         // 时区ID
  8.         ZoneId zoneId = ZoneId.of("Asia/Shanghai");
  9.         ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);
  10.         System.out.println("当前日期时间和时区: " + zonedDateTime);
  11.         // 获取其它时区的日期时间
  12.         ZoneId newYorkZoneId = ZoneId.of("America/New_York");
  13.         ZonedDateTime newYorkDateTime = zonedDateTime.withZoneSameInstant(newYorkZoneId);
  14.         System.out.println("纽约的日期时间: " + newYorkDateTime);
  15.         // 当前的日期时间
  16.         ZonedDateTime now = ZonedDateTime.now();
  17.         System.out.println("当前日期时间是:" + now);
  18.         System.out.println("当前时区是: " + now.getZone());
  19.         LocalDate date = now.toLocalDate();
  20.         System.out.println("本地日期是:" + now);
  21.         LocalTime time = now.toLocalTime();
  22.         System.out.println("本地时间是:" + time);
  23.     }
  24. }
  25. // 输出
  26. 当前日期时间和时区: 2024-07-06T20:07:56.439+08:00[Asia/Shanghai]
  27. 纽约的日期时间: 2024-07-06T08:07:56.439-04:00[America/New_York]
  28. 当前日期时间是:2024-07-06T20:07:56.508+08:00[GMT+08:00]
  29. 当前时区是: GMT+08:00
  30. 本地日期是:2024-07-06T20:07:56.508+08:00[GMT+08:00]
  31. 本地时间是:20:07:56.508
复制代码
  1. public class ZoneIdExample {
  2.     public static void main(String[] args) {
  3.         // 获取所有的可用时区ID
  4.         System.out.println("所有可用的时区ID: " + ZoneId.getAvailableZoneIds());
  5.         // 获取特定时区的信息
  6.         ZoneId zoneId = ZoneId.of("Asia/Tokyo");
  7.         System.out.println("时区ID为 Asia/Tokyo 的信息: " + zoneId);
  8.         
  9.         // 获取当前时区
  10.         ZoneId currentZone = ZoneId.systemDefault();
  11.         System.out.println("当前时区是: " + currentZone);
  12.     }
  13. }
  14. // 输出
  15. 所有可用的时区ID: [Asia/Aden, America/Cuiaba,……]
  16. 时区ID为 Asia/Tokyo 的信息: Asia/Tokyo
  17. 当前时区是: GMT+08:00
复制代码
四、格式化

   DateTimeFormatter 类用于格式化和剖析日期时间对象,它提供了多种预定义的格式化方式,也支持自定义格式。
  1. import java.time.LocalDateTime;
  2. import java.time.ZonedDateTime;
  3. import java.time.format.DateTimeFormatter;
  4. public class DateTimeFormatterExample {
  5.     public static void main(String[] args) {
  6.         // 当前时间
  7.         ZonedDateTime now = ZonedDateTime.now();
  8.         System.out.println("当前时间是: " + now);
  9.         System.out.println("另一种表示形式:" + now.format(DateTimeFormatter.RFC_1123_DATE_TIME));
  10.         // 创建一个 DateTimeFormatter 对象并使用预定义格式
  11.         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  12.         // 格式化 LocalDateTime 对象
  13.         String formattedDateTime = now.format(formatter);
  14.         System.out.println("格式化后的日期时间: " + formattedDateTime);
  15.         // 解析字符串到 LocalDateTime 对象
  16.         LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
  17.         System.out.println("解析后的日期时间: " + parsedDateTime);
  18.     }
  19. }
复制代码
Java 8 提供了很多预定义的格式化模式

可以根据必要选择符合的格式化模式来格式化或剖析日期时间字符串,使用自定义格式时要确保格式与输入字符串的格式匹配,否则会导致剖析失败或异常 。
闲暇是霓裳,不宜常穿用

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4