java.time
您可以指定任意数量的自定义模式,使用DateTimeFormatter
. 您需要做的就是将模式指定为可选,方法是将它们括在方括号中。DateTimeFormatterBuilder
为您提供更多的东西,例如不区分大小写的解析,默认为缺少的单位(例如HOUR_OF_DAY
)等。
演示:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeParseException;
import java.util.Locale;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// DateTimeFormatter parser = DateTimeFormatter.ofPattern("[M/d/uu[ H:m]][d MMM u][M.d.u][E MMM d, u]", Locale.ENGLISH);
final DateTimeFormatter parser = new DateTimeFormatterBuilder()
.parseCaseInsensitive() // parse in case-insensitive manner
.appendPattern("[M/d/uu[ H:m]][d MMM u][M.d.u][E MMM d, u]")
.toFormatter(Locale.ENGLISH);
// Test
Stream.of(
"Thu Apr 1, 2021",
"THU Apr 1, 2021",
"01/06/10",
"1 Jan 2009",
"1.2.2010",
"asdf"
).forEach(s -> {
try {
LocalDate.parse(s, parser);
System.out.println(true);
} catch(DateTimeParseException e) {
System.out.println(false);
}
});
}
}
输出:
true
true
true
true
true
false
从Trail: Date Time了解有关现代日期时间 API 的更多信息。