前言:看了下百度前几页的算法都太过繁杂,大多在50行到150行代码,我想提供一种简洁的写法供大家参考
算法:
/***
* 纯算法实现,计算前一天日期 ,并且验证输入日期合法性【15行代码搞定】
* by:lch
* date:2019-06-06
* @param y :年,负数表示公元前
* @param m :月
* @param d :日
* @return
*/
public static String Calculator(int y, int m , int d){
int[] am={12,1,2,3,4,5,6,7,8,9,10,11,12}; //month am[1] 一月
int[] ad={31,31,28,31,30,31,30,31,31,30,31,30,31}; //day ad[1] 一月,31天
if((y%4==0&&y%100!=0) || (y%400==0)){ // 判断是否是闰年
ad[2]=29;
}
if(m<1 || m>12 || d<1 || (d > ad[m])) //判断输入日期是否合法
return "Input error:Invalid date";
if(m==1 && d==1)
y = y-1; //年
if(d ==1){
d = ad[m-1];
m = am[m-1];//月
}else
d = d -1; //日
return y+"/"+m+"/"+d;
}
调用:
public static void main(String[] args) {
System.out.println(Calculator(2019,6 ,6));
}
如果有类似问题,或者有任何疑问可在底下留言 ^_^