Java 8–DateTimeFormatter:格式化Oracle日期



我有这个函数:

private static boolean isDate(String rowData, String pattern) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.getDefault());
LocalDate.parse(rowData, formatter).atStartOfDay(ZoneId.systemDefault()).toInstant();
return true;
} catch (Exception e) {
return false;
}
}

private static final String ORACLE_DATE_FORMAT1 = "MMM d, yyyy";
private static final String ORACLE_DATE_FORMAT2 = "dd MMM yyyy";
System.out.println("<--------------------------->");
System.out.println("value -> " + value);
System.out.println("isDate -> " + (isDate(value, ORACLE_DATE_FORMAT1) || isDate(value, ORACLE_DATE_FORMAT2)));
System.out.println("<--------------------------->");

但我得到的结果是:

value -> 1 Aug 2020
isDate -> false
<--------------------------->
<--------------------------->
value -> 31 Jul 2099
isDate -> true

如果将ORACLE_DATE_FORMAT2更改为d MMM yyyy,则此操作有效。根据文件,当日期指定为dd时,预计该月的日期为2个字符(例如,2020年8月1日(。

请注意,此更改将成功拾取1 Aug 202001 Aug 2020

<--------------------------->
value -> 01 Aug 2020
isDate -> true
<--------------------------->
<--------------------------->
value -> 1 Aug 2020
isDate -> true
<--------------------------->

相关内容

  • 没有找到相关文章

最新更新