java - Java 8 如何在使用 DateTimeFormatter#format 时排除可选部分
问题描述
我正在使用DateTimeFormatter
带有可选部分的模式的 Java 8,并且我希望在格式化为时排除该可选部分String
我正在使用的模式:yyyyMMddHHmmss[.SSS]Z
我如何使用我的DateTimeFormatter
:
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss[.SSS]Z");
String formattedDate = df.format(zonedDateTime);
我期望结果是:20180606052500+0100
代替:20180606052500.000+0100
一个解决方案是使用两个DateTimeFormatter
,但我不希望这样,因为我希望我DateTimeFormatter
在一个地方静态定义,以便它可以用于解析和格式化。
解决方案
一个简单的解决方案是重用模式的公共部分来构建 2 种不同的格式:
private static final String META_FORMAT = "yyyyMMddHHmmss%sZ";
private static final DateTimeFormatter FOR_PARSING = DateTimeFormatter.ofPattern(String.format(META_FORMAT, "[.SSS]"));
private static final DateTimeFormatter FOR_FORMATTING = DateTimeFormatter.ofPattern(String.format(META_FORMAT, ""));
这样你就没有重复的模式。
推荐阅读
- java - 如何导入 .p7b 根证书红帽服务器
- snowflake-cloud-data-platform - 使用 IICS 加载带有时间戳的平面文件
- ios - MapBox Maps iOS SDK:有没有办法在 PointAnnotation 被选中时对其进行动画处理
- python - 打印并将相同的变量附加到列表时,我得到了不同的值,这是为什么呢?
- sql - 我想更新表中的字符串
- php - 我是否需要在 MOODLE 中开发一个新功能来获得一个通过使用考勤插件返回会话列表的 Web 服务?
- jwt - Quarkus 同时使用 Authorization 和 Cookie 进行 jwt 授权
- javascript - 在锚点单击时切换输入字段
- excel-formula - 在公式中使用单元格值
- reactjs - 如何防止 React Native 多次重新渲染