java - 格式化 ZonedDateTime
问题描述
我需要格式化 ZonedDate 时间来格式化MM/dd/yyyy
.
ZonedDateTime zonedDateTime = ZonedDateTime.now();
String date = DateTimeFormatter.ofPattern("MM/dd/yyyy").format(zonedDateTime);
ZonedDateTime zoneDate = ZonedDateTime.parse(date);
得到错误:
线程“主”java.time.format.DateTimeParseException 中的异常:无法在索引 0 处解析文本“12/05/2018”
或者,如果我将值转换为具有所需格式的字符串,然后尝试再次使用我的格式将其解析回 ZonedDate Time:
DateTimeFormatter format = DateTimeFormatter.ofPattern("MM/dd/yyyy");
ZonedDateTime zonedDateTime = ZonedDateTime.now();
String date = DateTimeFormatter.ofPattern("MM/dd/yyyy").format(zonedDateTime);
ZonedDateTime zonedate = ZonedDateTime.parse(date, format);
我得到错误:
线程“主”java.time.format.DateTimeParseException 中的异常:无法解析文本“12/05/2018”:无法从 TemporalAccessor 获取 ZonedDateTime:{},ISO 解析为 java.time 类型的 2018-12-05 .format.Parsed
我已经看到很多关于此的问题,但我不断收到这些解析错误
解决方案
有两个问题。首先,日期中没有区域信息,其次,没有时间信息。您可以将其转换为LocalDate
:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
ZonedDateTime zonedDateTime = ZonedDateTime.now();
String date = formatter.format(zonedDateTime);
LocalDate localdate = LocalDate.parse(date, formatter);
您可以通过将时间设置为一天开始的时间并将区域设置为默认系统区域来将 a 转换LocalDate
为 a 。ZonedDateTime
否则,您需要提供时间和ZoneId
您选择的时间。
ZonedDateTime zdt = localdate.atStartOfDay(ZoneId.systemDefault());
推荐阅读
- python - 关闭/关闭 Python Websocket
- php - 为什么 phpseclibsftp 返回“目录 '%s' 不存在并且无法创建 (%s)。”?
- javascript - 在javascript中取一个div元素的孙子
- python - 如何将python字典转换为熊猫中的数据框
- java - 在 Ubuntu 中使用 avdmanager 创建 AVD 时出错
- javascript - 数据未正确显示在屏幕上
- javascript - 使用 Webpack(在 Django 中)减少 FontAwesome 5(带 JS 的 SVG)中的 all.js 大小
- c# - 仅在 href 之外匹配 URL 的正则表达式
- node.js - 数组中对象的值在 Mongoose 中不更新
- python-3.x - 如何使用 Pandas 从列中生成键