Java8 教程

Java8 与遗留代码互操作

作为一个全新的 API,Java 日期和时间 API 不得不与已有的类之间互相操作,尤其是无处不在的 java.util.Date、java.util.GregorianCalendar 及 java.sql.Date、java.sql.Time、java.sql.Timestamp。

Instant 类类似于 java.util.Date 类。在 Java8 中,java.util.Date 类中增加了两个方法:toInstant 方法用来将一个 Date 对象转换为一个 Instant 对象,而静态方法 from 正好相反。例如:

// 将 Instant 转换为 Date 对象
Date date = Date.from(Instant.now());
System.out.println("date=" + date);

// 将 Date 转换为 Instant 对象
Instant instant = date.toInstant();
System.out.println("instant=" + instant);

ZonedDateTime 类似于 java.util.GregorianCalendar 类,后者也在 Java8 中添加了一些转换方法。toZonedDateTime 方法可以将一个 GregorianCalendar 对象转换为一个 ZonedDateTime 对象,而静态方法 from 则可以进行反方向的转换。例如:

// 将 Instant 转换为 GregorianCalendar 对象
GregorianCalendar calendar = GregorianCalendar.from(ZonedDateTime.now());
System.out.println("calendar=" + calendar);

// 将 GregorianCalendar 转换为 Instant 对象
ZonedDateTime zonedDateTime = calendar.toZonedDateTime();
System.out.println("zonedDateTime=" + zonedDateTime);

java.sql 包中的日期和时间类也都添加了各自的转换方法。例如:

// 创建一个 Instant 对象
Instant instant = Instant.now();

// 将 Instant 转换为 java.sql.Date
java.util.Date sqlDate = java.sql.Date.from(instant);
System.out.println("java.sql.Date from Instant: " + sqlDate);
System.out.println(sqlDate.toInstant());

// 将 Instant 转换为 java.sql.Time
java.util.Date sqlTime = java.sql.Time.from(instant);
System.out.println("java.sql.Time from Instant: " + sqlTime);
System.out.println(sqlTime.toInstant());

// 将 Instant 转换为 java.sql.Timestamp
java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.from(instant);
System.out.println("java.sql.Timestamp from Instant: " + sqlTimestamp);
System.out.println(sqlTimestamp.toInstant());

你还可以向使用 java.text.Format 的遗留代码传递一个 DateTimeFormatter 对象,用新的方式进行格式化。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号