我有下面的代码片段,而不是硬编码的过程中的日期格式是有无论如何,我可以得到正确的日期格式返回Java。
private String getFormatter(String datetimeString) {
final String[] formats = {
"yyyy-MM-dd HH:mm:ss.S",
"yyyy-MM-dd HH:mm:ss.SS",
"yyyy-MM-dd HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss.SSSS",
"yyyy-MM-dd HH:mm:ss.SSSSS",
"yyyy-MM-dd HH:mm:ss.SSSSSS"
};
for (String format: formats){
LocalDateTime.parse(datetimeString, DateTimeFormatter.ofPattern(format));
return format;
}
return null;
}
1条答案
按热度按时间b1uwtaje1#
tl;dr
或者跳过所有这些格式化程序。将👉🏼SPACE替换为
T
,并默认解析。详情
只是检查文本的长度!使用
index = input.length ( ) - 20 - 1
。请在Ideone.com上查看此代码。
结果= yyyy-MM-dd HH:mm:ss.SSSSSS
不需要这些格式化模式
顺便说一下,这些特定格式都不是真正需要的。
在解析/生成文本时,java.time 类默认使用标准ISO 8601格式。有了这样的输入,就不需要指定格式化模式。
您的输入几乎符合ISO 8601标准。只需将中间的空格字符替换为
T
即可完全遵守。调用String#replace
,即.replace( " " , "T" )
。运行时: