try {
java.sql.Date.valueOf(2006-16-25);
} catch (IllegalArgumentException e) {
logger.error("validateDate(String)", e);
return false;
} return true;
上面的代码居然返回true..
java将"2006-16-25"转日期型时转到2007年了..
大家有什么好办法?
java.sql.Date.valueOf(2006-16-25);
} catch (IllegalArgumentException e) {
logger.error("validateDate(String)", e);
return false;
} return true;
上面的代码居然返回true..
java将"2006-16-25"转日期型时转到2007年了..
大家有什么好办法?
java.sql.Date.valueOf(“2006-16-25”);
} catch (IllegalArgumentException e) {
logger.error("validateDate(String)", e);
return false;
} return true;这样是java.sql.Date.valueOf只是判断字符串是否是yyyy-mm-dd格式
@?@
实际上最后返回的是 new Date(2006-1900,16-1,25)
你这是什么意思啊?
实际上最后返回的是 new Date(2006-1900,16-1,25)
你这是什么意思啊?这个你不用去管,实际上在这边-了多少 new的时候都会加上主要是因为Calendar的set方法会自动的将你超出界限的向上进位
import java.text.ParseException;public class DateParsing {
public static boolean isValidDate(String dateString) {
DateFormat format = DateFormat.getDateInstance();
format.setLenient(false);
try {
format.parse(dateString);
} catch (ParseException e) {
return false;
}
return true;
}
public static void main(String args[]) {
System.out.println(isValidDate("2006-12-32"));
}
}
int intYear = Integer.parseInt(strYear);
String strMonth = "2006-16-25".substring(5,7);
int intMonth = Integer.parseInt(strMonth);
String strDay = "2006-16-25".substring(8);
int intDay = Integer.parseInt(strDay);
Calendar checkDate = Calendar.getInstance();
checkDate.setLenient(false);
checkDate.set(intYear,intMonth,intDay);
try{
Date date = check.getTime();
}catch(IllegalArgumentException e){
System.out.print("ErrorMessage");
}
* 判断输入的日期字符串是否合法
* 日期格式为"yyyy-MM-dd"形式
* @param s String
* @return boolean
*/
public boolean isDate(String s)
{
String[] str = s.split("-") ;
try
{
Calendar c = Calendar.getInstance();
c.setLenient(false);
c.set(Integer.parseInt(str[0]),Integer.parseInt(str[1]), Integer.parseInt(str[2]));
c.getTime();
}
catch (Exception e)
{
return false;
} return true;
}但是这个方法并不能检测 02-30 04-30之类,还有待修改