Java8中 LocalDate和java.sql.Date的相互转换操作
一、简述
首先,Java8引入了java.time.LocalDate来表示一个没有时间的日期。
其次,使用Java8版本,还需要更新java.sql.Date,以便为LocalDate提供支持,包括toLocalDate和valueOf(LocalDate)等方法。
二、java.time.LocalDate转换为java.sql.Date
java.sql.Date.valueOf(localDate)
packageinsping; publicclassTest{ publicstaticvoidmain(String[]args){ java.time.LocalDatedate=java.time.LocalDate.now(); System.out.println("java.time.LocalDate="+date); java.sql.DatesqlDate=java.sql.Date.valueOf(date); System.out.println("java.sql.Date="+sqlDate); } }
结果:
java.time.LocalDate=2017-06-16
java.sql.Date=2017-06-16
三、java.sql.Date转换为java.time.LocalDate
sqlDate.toLocalDate()
publicclassTest{ publicstaticvoidmain(String[]args){ java.sql.DatesqlDate=java.sql.Date.valueOf("2017-06-16"); System.out.println("java.sql.Date="+sqlDate); java.time.LocalDatelocalDate=sqlDate.toLocalDate(); System.out.println("java.time.LocalDate="+localDate); } }
结果:
java.sql.Date=2017-06-16
java.time.LocalDate=2017-06-16
补充知识:Java8中Date和LocalDateTime的相互转换
一、在Java8中将Date转换为LocalDateTime
方法1:
将Date转换为LocalDatetime,我们可以使用以下方法:
1.从日期获取ZonedDateTime并使用其方法toLocalDateTime()获取LocalDateTime
2.使用LocalDateTime的Instant()工厂方法
示例:
packageinsping; importjava.time.Instant; importjava.time.LocalDateTime; importjava.time.ZoneId; importjava.util.Date; publicclassTest{ publicstaticvoidmain(String[]args){ Datedate=newDate(); Instantinstant=date.toInstant(); ZoneIdzoneId=ZoneId.systemDefault(); LocalDateTimelocalDateTime=instant.atZone(zoneId).toLocalDateTime(); System.out.println("Date="+date); System.out.println("LocalDateTime="+localDateTime); } }
结果:
Date=FriJun1615:35:26CST2017
LocalDateTime=2017-06-16T15:35:26.970
方法2:
我们也可以使用LocalDateTime的FactoryInput()方法使用系统的默认时区。
LocalDateTimelocalDateTime=LocalDateTime.ofInstant(date.toInstant(),zoneId);
二、在Java8中将LocalDateTime转换为Date
要将LocalDateTime转换回java.util.Date,我们可以使用以下步骤:
1.使用atZone()方法将LocalDateTime转换为ZonedDateTime
2.将ZonedDateTime转换为Instant,并从中获取Date
示例:
packageinsping; importjava.time.LocalDateTime; importjava.time.ZoneId; importjava.time.ZonedDateTime; importjava.util.Date; publicclassTest{ publicstaticvoidmain(String[]args){ ZoneIdzoneId=ZoneId.systemDefault(); LocalDateTimelocalDateTime=LocalDateTime.now(); ZonedDateTimezdt=localDateTime.atZone(zoneId); Datedate=Date.from(zdt.toInstant()); System.out.println("LocalDateTime="+localDateTime); System.out.println("Date="+date); } }
结果:
LocalDateTime=2017-06-16T15:38:48.580
Date=FriJun1615:38:48CST2017
以上这篇Java8中LocalDate和java.sql.Date的相互转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。