/**
* @version
* @author JavaHanlei
* 计算任意一天距1949年10月1日的天数;
*
*/
import java.util.Scanner;
public class Main {
public static void main(String args[]){
int sum =0;
int ren[] = {31,29,31,30,31,30,31,31,30,31,30,31}; //制定闰年每个月的天数数组
int ping[] = {31,28,31,30,31,30,31,31,30,31,30,31}; //制定平年每个
Scanner sc = new Scanner (System.in);
String st = sc.nextLine();
String [] s = st.split("-"); //对输入的字符串按照“-”分割成字符串数组
int year = Integer.parseInt(s[0]);
int mouth = Integer.parseInt(s[1]);
int date = Integer.parseInt(s[2]);
if(year>=1949){ //当year大于1949时的天数算法
for(int i=1949; i<year; i++){
sum = sum + (PingOrRen(i)?366:365);
}
int [] y = PingOrRen(year)?ren:ping;
for(int i=0; i<mouth-1; i++){
sum += y[i];
}
sum = Math.abs(sum+date-274);
}else{ //当year小于1949时的天数算法
for(int i = year+1; i<1949; i++){
sum = sum + (PingOrRen(i)?366:365);
}
int [] y = PingOrRen(year)?ren:ping;
for(int i=mouth-1; i<12; i++){
sum += y[i];
}
sum = sum - date + 274 ;
}
System.out.println(sum);
}
public static boolean PingOrRen(int year){ //闰年平年的判断
if(year%4==0 && year%100!=0 || year%400==0) return true;
else return false;
}
}
运行结果:
1949-10-3
2