首页 > 解决方案 > Java 短日期字符串转换为 ZonedDateTime

问题描述

我有String一个日期格式为:2021-10-05. 需要将其转换StringZonedDateTime类型。尝试以这种方式执行此操作,但无法解析 Text。时间可以是 00:00:00。有什么建议么?

public static final ZoneId ZONE_ID = ZoneId.of("UTC");

ZonedDateTime dt2 = ZonedDateTime.parse(date, //date String = 2021-10-05
DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZONE_ID));

标签: javadatetype-conversionzoneddatetime

解决方案


您必须先使用LocalDate转换,因为没有时间在给定的字符串中进行解析:

LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
ZonedDateTime dt2 = ZonedDateTime.of(localDate, LocalTime.MIDNIGHT, ZONE_ID);

或者以评论中发布的更优雅的方式:

LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
ZonedDateTime dt2 = localDate.atStartOfDay(ZONE_ID);

推荐阅读