这个问题在这里已经有答案了:
错误:尝试分析字符串日期(2个答案)时,无法在索引0处分析文本“1/31/2020”
上个月关门了。
我有这个功能:
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
1条答案
按热度按时间klsxnrf11#
如果你改变了,这就行了
ORACLE_DATE_FORMAT2
至d MMM yyyy
. 根据文件,当日期指定为dd
,它期望使用2个字符表示月份的某一天(例如,2020年8月1日)。请注意,此更改将同时适用于这两种情况
1 Aug 2020
以及01 Aug 2020
成功。