Java没有任何方法可以在没有明确定义时猜测日期格式吗?
例如,用户键入11Mar09或11-09-2009或11/09/2009或11-09什么是解析这个到Date对象的最佳方法,没有一堆try catch或引发错误?
我认为你不想这样做,特别是基于你的例子,但如果你必须这样做,我认为你最好的选择是DateUtils在公共场合使用像Apache这样的东西:
String[] datePatterns = new String[] {
"ddMMMyy", // ex. 11Mar09
"dd-MM-yyyy", // ex. 11-09-2009
"dd/MM/yyyy", // ex. 11/09/2009
"dd-MM" // ex. 11-09
}
Date date = DateUtils.parseDate(stringDate, datePatterns);
Run Code Online (Sandbox Code Playgroud)
不幸的是,像上面第四个这样的日期会有问题 - 是"11/09"9月11日,11月9日,2011年9月,2009年11月,还是其他什么?
我的建议是不要.使用日期选择器或明确指出的格式.猜测会导致各种各样的问题,包括如果日期是关键的,诉讼.
如果您不得不猜测,请提供一些非歧义的反馈,例如确认页面上写着"您的航班将在2009年11月9日预订.这是正确的吗?".