我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一。
我希望它接受的格式如下: MM/DD/YY 、 M/DD/YY 、 MM/D/YY 和 M/D/YY 。
我正在测试第一种格式,每次它都告诉我它无效,即使我输入了有效日期。
这是我当前的代码:
public class IsDateFormatValid
{
public boolean isValid(String date)
{
boolean result = true;
if(date.length()>8||date.length()<6)
{
result= false;
}
if(date.length()==8)
{
if((Character.toString(date.charAt(2))!= "/")||(Character.toString(date.charAt(5))!="/"))
{
result=false;
}
}
if(date.length()==7)
{
if((Character.toString(date.charAt(2))!="/"&&Character.toString(date.charAt(1))!="/") ||(Character.toString(date.charAt(3))!="/"&&Character.toString(date.charAt(4))!= "/"))
{
result=false;
}
}
return result;
}
}
我仍然需要输入最后一种格式情况的条件。我做了一个调试方法,发现总是返回 false 的部分是这样的行: if((Character.toString(date.charAt(2))!= "/")||(Character.toString(date.charAt (5))!="/"))
这个问题的要点是尝试根据多种格式来检查它,而不仅仅是这里大多数其他问题所询问的单一格式。
您可能想要迭代可能的格式,如下所示:
EXAMPLE:
private static String[] date_formats = {
"yyyy-MM-dd",
"yyyy/MM/dd",
"dd/MM/yyyy",
"dd-MM-yyyy",
"yyyy MMM dd",
"yyyy dd MMM",
"dd MMM yyyy",
"dd MMM yyyy"
};
/**
* A brute-force workaround for Java's failure to accept "any arbitrary date format"
*/
public static Date tryDifferentFormats (String sDate) {
Date myDate = null;
for (String formatString : date_formats) {
try {
SimpleDateFormat format = new SimpleDateFormat(formatString);
format.setLenient(false);
myDate = format.parse(sDate);
break;
}
catch (ParseException e) {
// System.out.println(" fmt: " + formatString + ": FAIL");
}
}
return myDate;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)