java - 将此格式 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 中做到这一点?
解决方案
你的问题有些问题。您没有在 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
.
推荐阅读
- php - 如何在 php ftp 连接中传递 namefmt 参数?
- c# - Avalonia 组合框装订
- java - Azure Spring Boot 功能 - 如何同时将触发器和输入绑定都传递给 handleRequest 方法?
- angular - 从 NgRx Select 内部返回值
- php - Laravel“至少和最多”一个字段是必需的
- google-play - 了解订单簿的彩条
- python-3.x - 在计算器 Django 中集成多选项下拉列表
- html - Flask WTForms SelectField 添加占位符或禁用选项
- reactjs - 连接失败:套接字 io 中的资源不足错误
- jmeter - jmeter中的文件验证API失败