Java8–datetimeformatter:格式化oracle日期

wyyhbhjk  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(293)

这个问题在这里已经有答案了

错误:尝试分析字符串日期(2个答案)时,无法在索引0处分析文本“1/31/2020”
上个月关门了。
我有这个功能:

  1. private static boolean isDate(String rowData, String pattern) {
  2. try {
  3. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.getDefault());
  4. LocalDate.parse(rowData, formatter).atStartOfDay(ZoneId.systemDefault()).toInstant();
  5. return true;
  6. } catch (Exception e) {
  7. return false;
  8. }
  9. }

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

但我得到的结果是:

  1. value -> 1 Aug 2020
  2. isDate -> false
  3. <--------------------------->
  4. <--------------------------->
  5. value -> 31 Jul 2099
  6. isDate -> true
klsxnrf1

klsxnrf11#

如果你改变了,这就行了 ORACLE_DATE_FORMAT2d MMM yyyy . 根据文件,当日期指定为 dd ,它期望使用2个字符表示月份的某一天(例如,2020年8月1日)。
请注意,此更改将同时适用于这两种情况 1 Aug 2020 以及 01 Aug 2020 成功。

  1. <--------------------------->
  2. value -> 01 Aug 2020
  3. isDate -> true
  4. <--------------------------->
  1. <--------------------------->
  2. value -> 1 Aug 2020
  3. isDate -> true
  4. <--------------------------->

相关问题