【发布时间】:2021-03-09 01:45:21
【问题描述】:
public void parsedate(String date) {
DateTimeFormatter formatter = null;
formatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ofPattern("yyyyMMdd"))
.appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
.appendOptional(DateTimeFormatter.ofPattern("MM/dd/yyyy")).toFormatter();
TemporalAccessor parse = formatter.parse(date);
System.out.println("original" + date);
return LocalDateTime.parse(date, formatter);
}
String[] strDates = new String[]{
"20180429",
"2018-04-29",
"04/29/2018",
"01/20/1999",
"1899-12-25",
"2020-02-29", // leap year future
"00010101",
"19160229" // leap year past
};
for(String date: strDates) {
parsedate(date);
}
我正在使用多种日期模式解析日期。我会将日期字符串传递给 parsedate 方法。我的日期字符串被解析。但我想得到被解析的日期的模式。
例子:
输入日期:“2018-04-29” 处理:parsedate("2018-04-29") 输出:日期解析成功
我的期望是输入日期为“yyyy-MM-dd”的模式:“2018-04-29”。如何获得?
【问题讨论】:
-
似乎是 DOH! 时刻:只需检查分隔符是否存在:
if (date.indexOf('/') != -1) { /* pattern #3 */ } else if (date.indexOf('-') != -1) { /* pattern #2 */ } else { /* pattern #1 */ } -
我认为没有办法在使用
formatter解析后找出匹配的可选格式。如果您需要此信息,则必须单独检查模式。 -
LocalDateTime.parse(date, formatter)无法工作,因为您的字符串中没有时间。坚持LocalDate。
标签: java date dateformatter