将这种格式的时间 20210526T150239 转换为这种格式 2021-05-26T12:56:21.826

Convert time in this format 20210526T150239 to this format 2021-05-26T12:56:21.826

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

如何将其转换成这种格式 2021-05-06T12:56:21.826?

2021-05-26T12:56:21.826中的T值后是不是正好等于150239?但很明显,我希望以这样的方式更改格式:然后是小时值:然后是分钟值:然后是第二个值。然后是毫秒。

如何将 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 中完成?

你的问题有问题。 您没有在 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