LocalDateTime,LocalDate与Date的时间类型转换

349 阅读1分钟

Date的时间类型转换

需要注意的是要事先导入Commons-lang3的依赖包 说明: 当需要数据的日期格式化时, yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year, 意思是当天所在的周属于的年份,一周从周日开始,周六结束, 只要本周跨年,返回的 YYYY 就是下一年。另外需要注意: 表示月份是大写的 M 表示分钟则是小写的 m 24 小时制的是大写的 H 12 小时制的则是小写的 h 表示月份是大写的 M 表示分钟则是小写的 m 24 小时制的是大写的 H 12 小时制的则是小写的 h

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.1</version>
</dependency>
// Date类型转String类型  
String date = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");  
System.out.println(date); // 输出 2021-05-01 01:01:01    
// String类型转Date类型  
Date date = DateUtils.parseDate("2021-05-01 01:01:01", "yyyy-MM-dd HH:mm:ss");    
// 计算一个小时后的日期  
Date date = DateUtils.addHours(new Date(), 1);

LocalDateTime的时间类型转换

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now();
String localTime = df.format(time);
LocalDateTime ldt = LocalDateTime.parse("2018-01-12 17:07:05",df);
System.out.println("LocalDateTime转成String类型的时间:"+localTime);
System.out.println("String类型的时间转成LocalDateTime:"+ldt);

Date转换为LocalDate/LocalDateTime

Date nowTime = new Date();
LocalDate now = nowTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDateTime nowTime = nowTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

LocalDate / LocalDateTime转换为Date

LocalDate nowTime = LocalDate.now(ZoneId.systemDefault());
Date date = Date.from(nowTime.atStartOfDay(ZoneId.systemDefault()).toInstant());

LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
Date date = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());