import java.util.Calendar;
import java.util.Date;
public class DateDeal {
/*
* 处理得到的时间
* 返回格式为yyyy-MM-dd
* 不能处理的情况:
* 1.年份不为四个或两个字符的
* 2.年份为两个字符时,30年之前的加20,之后的加19
*/
private static String deal(String s) {
if(s.matches("^//d*$"))return s;
String year="";
String month="";
String day="";
int i=0;
//得到年
for(;i<s.length();i++){
if(i>3) break;
int y=(int)s.charAt(i)-(int)'0';
if(y>=0&&y<10){
year+=s.charAt(i);
}else{
break;
}
}
if(i<s.length()&&!(s.charAt(i)+"").matches("^//d$"))
i++;
//得到月
int now=i;
for(;i<s.length();i++){
if(i-now>1) break;
int m=(int)s.charAt(i)-(int)'0';
if(m>=0&&m<10){
month+=s.charAt(i);
}else{
break;
}
}
if(i<s.length()&&!(s.charAt(i)+"").matches("^//d$"))
i++;
//得到日
now=i;
for(;i<s.length();i++){
if(i-now>1) break;
int d=(int)s.charAt(i)-(int)'0';
if(d>=0&&d<10){
day+=s.charAt(i);
}else{
break;
}
}
if(year.length()==2){
if((int)year.charAt(0)-(int)'0'<3)
year="20"+year;
else
year="19"+year;
}
//月、日的越界处理
month="00"+month;
if("00".equals(month))
month="01";
if(Integer.parseInt(month.substring(month.length()-2, month.length()))>12)
month="12";
day="00"+day;
if("00".equals(day))
day="01";
Calendar c=Calendar.getInstance();
c.set(Integer.parseInt(year), Integer.parseInt(month)-1, 1);
int lastDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);
if(Integer.parseInt(day.substring(day.length()-2, day.length()))>lastDay)
day=lastDay+"";
String birthday=year+"-"+month.substring(month.length()-2, month.length())+"-"+day.substring(day.length()-2, day.length());
return birthday;
}
}