java - java.time.format.DateTimeFormatter.ISO_INSTANT 的格式字符串?
问题描述
在 Java 8 的java.time
包中,有这个格式化程序
java.time.format.DateTimeFormatter.ISO_INSTANT
( JavaDoc )
它允许在解析和格式化时使用可选的小数秒
以 UTC 格式格式化或解析瞬间的 ISO 瞬间格式化程序,例如“2011-12-03T10:15:30Z”。
这将返回一个能够格式化和解析 ISO-8601 即时格式的不可变格式化程序。格式化时,总是输出秒数。纳秒根据需要输出零、三、六或九位数字。解析时,至少需要秒字段的时间。解析从零到九的小数秒。不使用本地化的十进制样式。
可用于创建此格式化程序的格式字符串是什么?我需要存储String
但不是DateTimeFormatter
因为后者不可序列化。
具体来说,我想知道如何表达小数秒(包括.
数字前面的)。我知道S
是几分之一秒,X
是区域偏移,但我不知道如何把它们放在一起
S fraction-of-second fraction 978
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
解决方案
我能找到的最接近的是这个答案。但是,我不知道/找不到任何方法来获得 0/3/6/9 位十进制行为。
我敦促您考虑是否解决了正确的问题,即:为什么需要序列化格式化程序本身?格式化程序不是数据,而是逻辑。序列化你的数据,并在整个项目中使用一致的格式化方案——你甚至可以集中时间序列化/反序列化,这样读/写的类实际上根本不需要格式化。
另一种方法是找到一种方法来序列化格式化程序,并让每个读者和作者承担记录和解释用于序列化时间的格式化程序的负担。您将自己置于对所有涉及的类之间共享的格式的硬依赖中。
推荐阅读
- python - 无法安装 pyspark
- redux-form - 使用 redux-form 示例规范化日期输入
- android - requestNetworkScan - 返回无效的小区标识 - Android P
- c# - 要发布哪些文件?ASP .Net 核心 2.0
- ios - 为什么 #available(iOS 11, *) 在 iOS 12 上解析为 true?
- kubernetes - 有没有办法让两个具有相同应用程序的容器连接到 Kubernetes 上的同一个数据库?
- powershell - 使用通配符作为驱动器号启动进程
- android - 使用 Firebase-UI、Firestore 作为数据库和 Picasso 时,图像不会出现在 RecyclerView 中
- c - 加速包含事件的 ODE 的并行求解
- php - Smarty输出动态变量