java - Java 短日期字符串转换为 ZonedDateTime
问题描述
我有String
一个日期格式为:2021-10-05
. 需要将其转换String
为ZonedDateTime
类型。尝试以这种方式执行此操作,但无法解析 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));
解决方案
您必须先使用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);
推荐阅读
- javascript - 向 websocket 发送请求后,数组有一个额外的未定义元素
- python - 在 python 中存储地铁/公共交通站点的数据类型
- c++ - 如何通过 Poco::Data 将数据库中的值(可能为 NULL)读入 std::vector?
- php - 从一个用户向另一个用户发送通知。php laravel
- c# - 泛型接口和类的 C# 错误
- laravel - 从 Voyager 控制器覆盖特定的 BREAD 方法
- embedded-linux - 设备树更改以配置特定 GPIO 线以引发中断
- flutter - Dart、Flutter中如何在一行上声明多个需要的变量?
- javascript - 尝试使用 SVG 绘制一个圆圈,该圆圈适用于 Firefox,但在实际项目中不起作用
- sql - 如何在没有聚合函数的情况下对sql中的数据进行分组