日期间的间隔天数

xiaoxiao2021-02-28  66

/*从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:2017-8-31

程序输出:24806*/

-------------------------------------------code---------------------------------------------------------------

thinking;以上为例,先计算2017-1-1与1949-1-1间天数,再加上2017-8-31为2017年的第几天的天数,再减去1949-10-1为1949年的第几天的天数;

public class AL22 { /** * @param args */ public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("输入截止日期格式为:(1949-10-02)"); String startDayString="1949-10-01"; String endDayString=sc.nextLine(); System.out.println("相差天数为:"+diff(startDayString,endDayString)); } public static int dayofyear[]={365,366}; public static int dayofmonth[][]={{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; public static int diff(String strstr,String endstr) { String s1[]=strstr.split("-"); String s2[]=endstr.split("-"); int days=0; int flag; int startYear=Integer.parseInt(s1[0]); int endYear=Integer.parseInt(s2[0]); int startMonth=Integer.parseInt(s1[1]); int endMonth=Integer.parseInt(s2[1]); int startDay=Integer.parseInt(s1[2]); int endDay=Integer.parseInt(s2[2]); for(int i=startYear;i<endYear;i++) { days+=dayofyear[dayOfYearIndex(i)]; } days+=daysth(endYear,endMonth,endDay); days-=daysth(startYear,startMonth,startDay); return days; } public static int dayOfYearIndex(int i) { if(i%4==0&&i0!=0||i@0==0) return 1; return 0; } public static int daysth(int year,int month,int day) { int days=day; for(int i=1;i<month;i++) { days+=dayofmonth[dayOfYearIndex(year)][i]; } return days; } }

转载请注明原文地址: https://www.6miu.com/read-56299.html

最新回复(0)