首页 > 解决方案 > 将此格式 20210526T150239 的时间转换为此格式 2021-05-26T12:56:21.826

问题描述

我有一个格式为“20210526T150239”的传入字符串,双引号表示这是字符串。

如何将其转换为 2021-05-06T12:56:21.826 这种格式的东西?

在 2021-05-26T12:56:21.826 中的 T 值不完全等于 150239 之后?但很明显,我希望以这样的方式更改格式,即 Hour value then : then minute value then : and second value then 。然后是毫秒。

如何将 Java 中的格式从 20210526T150239 更改为这种格式 2021-05-06T12:56:21.826?

我尝试过这样的事情

            long unixSeconds = Long.parseLong(incomingTimeStamp);
            Date date = new Date(unixSeconds * 1000L);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
            sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
            incomingTimeStamp = sdf.format(date)

但是字符串中的 T 引起了问题,它不能仅通过乘以 1000L 转换为 Long。如何在 Java 中做到这一点?

标签: javadatetimestamp

解决方案


你的问题有些问题。您没有在 Date String 中传递毫秒信息,但期望这应该是您的输出日期的一部分,这是不可能的。

无论如何,这是我的解决方案:

String dateStr = "20210526T150239";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss");

LocalDateTime outputDate = LocalDateTime.parse(dateStr ,formatter);

如果您的输入日期包含像 20210526T150239867 这样的毫秒信息,您可以DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssSSS")相应地更改日期模式并解析为LocalDateTime.


推荐阅读