尝试解析 LocalDateTime 时出现异常

2024-02-11

我正在使用以下时间戳格式:

yyyyMMddHHmmssSSS

以下方法效果很好:

public static String formatTimestamp(final Timestamp timestamp, final String format) {
    final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
    return timestamp.toLocalDateTime().format(formatter);
}

而且,当我传入带有该格式字符串的时间戳时,它会返回,例如:

20170925142051591

然后,我需要再次从该字符串映射到时间戳,本质上是相反的操作。我知道我可以使用SimpleDateFormat和它的parse()方法,但我更愿意坚持java.time样式格式化(如果可能的话)。

我写了这段(相当hacky)代码,它适用于某些格式,但不适用于这种特定格式:

public static Timestamp getTimestamp(final String text, final String format, final boolean includeTime) {
    final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
    final TemporalAccessor temporalAccessor = formatter.parse(text);
    if (includeTime) {
        final LocalDateTime localDateTime = LocalDateTime.from(temporalAccessor);
        return DateTimeUtil.getTimestamp(localDateTime);
    } else {
        final LocalDate localDate = LocalDate.from(temporalAccessor);
        return DateTimeUtil.getTimestamp(localDate);
    }
}

它在第二行失败,在formatter.parse(text); part.

堆栈跟踪:

java.time.format.DateTimeParseException: Text '20170925142051591' could not be parsed at index 0
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)
    at java.time.LocalDateTime.parse(LocalDateTime.java:477)
    at com.csa.core.DateTimeUtil.main(DateTimeUtil.java:169)

有没有一种更简单的方法来实现我想要的而不使用SimpleDateFormat?


这是一个错误:https://bugs.openjdk.java.net/browse/JDK-8031085 https://bugs.openjdk.java.net/browse/JDK-8031085

上面的链接还提供了解决方法:使用java.time.format.DateTimeFormatterBuilder with a java.time.temporal.ChronoField对于毫秒字段:

String text = "20170925142051591";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    // date/time
    .appendPattern("yyyyMMddHHmmss")
    // milliseconds
    .appendValue(ChronoField.MILLI_OF_SECOND, 3)
    // create formatter
    .toFormatter();
// now it works
formatter.parse(text);

不幸的是,似乎没有办法仅使用DateTimeFormatter.ofPattern(String).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试解析 LocalDateTime 时出现异常 的相关文章

  • 枚举的子类化

    有没有一种简单的方法来子类化Javaenum 我问这个问题是因为我有大约 10 个实现相同接口的对象 但它们对某些方法也有相同的实现 因此我想通过将所有相同的实现放置在扩展的中间对象中来重用代码Enum它也是我需要的所有其他类的超类 或许事
  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • Kafka - 如何同时使用过滤器和过滤器?

    我有一个 Kafka 流 它从一个主题获取数据 并且需要将该信息过滤到两个不同的主题 KStream
  • 使用 Exec Maven 插件分叉 Java,而不使用“exec”目标

    来自文档 https www mojohaus org exec maven plugin exec exec在单独的进程中执行程序和Java程序 exec java在同一虚拟机中执行 Java 程序 我想 fork 一个 java 程序
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • 将类转换为 JSONObject

    我有好几堂这样的课 我想将类转换为 JSONObject 格式 import java io Serializable import com google gson annotations SerializedName public cla
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • IntelliJ Idea:将简单的 Java servlet(无 JSP)部署到 Tomcat 7

    我尝试按照教程进行操作here http wiki jetbrains net intellij Creating a simple Web application and deploying it to Tomcat部署 servlet
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • NLTK数据安装问题

    我正在尝试在 Mac OSX 10 9 上安装 NLTK Data NLTK 3 0文档中提到 要设置的下载目录是 usr share nltk data 用于集中安装 但对于这条路径 我收到错误 OSError Errno 13 权限被拒
  • 运算符重载Python自定义类

    假设我想重载一个运算符 假设 现在 对于我创建的一些课程 class A object code here 进而 a A b A 我会做什么来定义 c a b 或类似的规定 注意 这个问题纯粹是理论上的 我可能会在某个时候使用它 只是目前不
  • C++:这个运算符^是什么? [复制]

    这个问题在这里已经有答案了 int main std string original Hello world std string decrypted std string encrypted char key x cout lt lt O
  • 使用 SqlConnection 和 VB.NET 创建 ASP.NET 聚合源

    这似乎是 Scott Mitchell 撰写的一篇很棒的文章 用于创建联合提要ASP NET 3 5 对我来说 问题是它使用 C 和 Linq 目前我对这两种语言不太熟悉 http dotnetslackers com articles a
  • Elastic Beanstalk 无法识别文件的绝对路径,返回 FileNotFoundError

    我正在使用 AWS Elastic Beanstalk 运行 Flask 应用程序 应用程序部署成功 但我的代码中有一个任务使用 pandasread csv从 csv 文件中提取数据 代码行是 form1 pd read csv opt
  • 为什么 numberOfSectionsInTableView 在 UITableViewController 中被调用两次?

    是否还有其他原因 除了调用 reloadData 为什么 numberOfSectionsInTableView 被调用两次 我进行了调试 发现在初始启动期间 当没有调用自定义 reloadData 语句时 它会被调用两次 我已经使用 IB
  • 部署 MVC,无需关闭整个站点

    假设我想对我的 MVC 项目的一个视图中的某些内容进行更改 一些非常简单的事情 比如删除一个句子或添加一个句号或其他东西 因此 据我所知 我必须重新发布整个网站 然后删除整个网站并用新发布的集合替换它 我想知道是否有一种方法 如果我对单个页
  • 如何从 Ubuntu 19.10 卸载 python 3.7?

    我在用着Ubuntu 19 10 其中有python的版本3 7 发布后python 3 8 我已经安装了 现在我想卸载python 3 7这样每当我打电话时python3在我的终端中 它总是会调用python3 8 您不需要为此卸载旧版本
  • 如何在不绑定V​​iewModel(MVVM)中UI的情况下使用android导航?

    我正在使用在 Google I O 2018 上展示的 Android 导航 似乎我可以通过绑定到某些视图或使用NavHost从 Fragment 中获取它 但我需要的是根据几个条件从我的第一个片段导航到 ViewModel 的另一个特定视
  • if else 和 #if #else #endif 之间的区别

    我很困惑if else and if else endif结构体 它们之间有什么区别 我应该在哪些具体情况下使用它们 if and else 条件在运行时评估 if else由预处理器在编译之前进行评估
  • 为什么“a”标签需要“tabindex=0”?

    我正在开发一个网络应用程序 其中一个重复的应用程序a当我通过 Tab 键浏览页面时 锚点 元素没有获得键盘焦点 仅当我添加tabindex 0我可以点击它吗 虽然我的目标是使焦点可见 但我正在使用 jQuery 片段确定元素是否获得焦点 W
  • 是否有一种简洁的方法在 Google Guava 中为 InputStream 创建 InputSupplier?

    Google Guava 中有一些工厂方法来创建 InputSuppliers 例如从一个byte ByteStreams newInputStreamSupplier bytes 或者从一个File Files newInputStrea
  • 为什么在 Alpine Linux 上安装 Pandas 需要很长时间

    我注意到 使用基本操作系统 Alpine 与 CentOS 或 Debian 在 Docker 容器中安装 Pandas 和 Numpy 它的依赖项 需要更长的时间 我在下面创建了一个小测试来演示时差 除了 Alpine 需要几秒钟更新和下
  • 创建和更新 multiprocessing.Manager 对象内的嵌套字典和列表

    我在里面创建了一个嵌套字典multiprocessing Manager dict目的 字典方法如update clear等 当我将它们应用到嵌套字典时不起作用 这是一个例子 from multiprocessing import Mana
  • Gatsby GraphQL 查询多个图像

    我正在努力弄清楚如何在 Gatsby Js 中使用 GraphQL 查询多个特定图像 我最初的想法是做这样的事情 file relativePath eq images front jpg id file relativePath eq i
  • Foundation 6 画布外菜单点击后自动关闭

    我一直在搜索如何在单击某些菜单项后自动关闭画布外菜单 但似乎没有任何效果 因此 我按照 Foundation 6 文档上有关如何制作画布外菜单的指南进行操作 并且它有效 这部分还可以 现在 当我单击某个链接菜单时 它会停留在那里 我希望它关
  • 摄像头下方有一个黑色的底部空间

    我正在介绍一个UIImagePickerController from a UITabBarController let imagePicker UIImagePickerController imagePicker delegate se
  • 预下载所有依赖项

    我需要将 Maven 构建 Java 项目发布给远程 QA 团队 为此 我想下载所有依赖项 然后发送它们 这样他们就不需要下载它们 目前所有依赖项都定义在pom xml文件 我们使用mvn install or mvn package构建项
  • 如何删除Selectbox/Checkbox的默认状态?

    我想知道如何删除选择框的默认箭头和复选框中的渐变 并且我想在其上使用自定义图像 例如 这是一些代码
  • 尝试解析 LocalDateTime 时出现异常

    我正在使用以下时间戳格式 yyyyMMddHHmmssSSS 以下方法效果很好 public static String formatTimestamp final Timestamp timestamp final String form