gpt4 book ai didi

Java从多种日期格式中确定一种日期格式

转载 作者:行者123 更新时间:2023-12-02 11:39:36 25 4
gpt4 key购买 nike

我们希望从不同语言和日志机制的不同系统生成的LOG文件中获得正确的日期格式。

我们认为这可以通过 SimpleDataFormat.parse 来完成和try-catch exception方式。但下面的代码显示了一个问题。

    String tryparseString = "18-01-22 00:03:34:071";
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf1.parse(tryparseString));
System.out.println(sdf1.format(sdf1.parse(tryparseString)));
System.out.println("Yeah! We found a CAN PARSE datefromat = " + sdf1.toPattern());
SimpleDateFormat sdf2 = new SimpleDateFormat("yy-MM-dd HH:mm:ss:SSS");
System.out.println(sdf2.parse(tryparseString));
System.out.println(sdf2.format(sdf2.parse(tryparseString)));
System.out.println("Yeah! We found a CAN PARSE datefromat = " + sdf2.toPattern());
} catch (ParseException e) {
e.printStackTrace();
}

结果如下:

Sat Jan 22 00:03:34 CST 18
0018-01-22 00:03:34
Yeah! We found a CAN PARSE datefromat = yyyy-MM-dd HH:mm:ss
Mon Jan 22 00:03:34 CST 2018
18-01-22 00:03:34:000
Yeah! We found a CAN PARSE datefromat = yy-MM-dd HH:mm:ss:SSS

所以,"18-01-22 00:03:34:071"都可以格式化为 yyyy-MM-dd HH:mm:ssyy-MM-dd HH:mm:ss:SSS .

前一个远远正确。

那么,有没有办法从多种日期格式中确定正确的日期格式?

最佳答案

java.time来救援。

    String[] formats = {
"yyyy-MM-dd HH:mm:ss",
"yy-MM-dd HH:mm:ss:SSS"
};

String tryparseString = "18-01-22 00:03:34:071";

for (String format : formats) {
try {
LocalDateTime.parse(tryparseString, DateTimeFormatter.ofPattern(format));
System.out.println("Yeah! We found a CAN PARSE date format = " + format);
} catch (DateTimeParseException dtpe) {
System.out.println(dtpe);
}
}

打印:

java.time.format.DateTimeParseException: Text '18-01-22 00:03:34:071' could not be parsed at index 0
Yeah! We found a CAN PARSE datefromat = yy-MM-dd HH:mm:ss:SSS

换句话说,第一种格式 yyyy-MM-dd HH:mm:ss 无法解析您的示例字符串,而第二种格式则如您所愿成功。

如果您仍然遇到 DateTimeFormatter 解析不应解析字符串的情况,您可以尝试 DateTimeFormatter.ofPattern(format).withResolverStyle(ResolverStyle.STRICT) 。它可能会捕获更多不匹配的字符串。不过,在这种情况下,您在格式模式中将需要 uuuuuu 而不是 yyyyyy

关于Java从多种日期格式中确定一种日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com