intisLeapYear(intyear){return(year%4==0&&year%100!=0)||year%400==0;}intmonthDays(intmonth,intyear){intmonth_days[]={31,28,31,30,31,30,31,31,30,31,30,31};returnmonth==2&&isLeapYear(year)?29:month_days[month-1];}intdaysBetween(intstart_month,intstart_day,intstart_year,intend_month,intend_day,intend_year){intdays=0;// sanitize month inputsif(start_month<1)start_month=1;if(end_month<1)end_month=1;if(start_month>12)start_month=12;if(end_month>12)end_month=12;// sanitize day inputsif(start_day<1)start_day=1;if(end_day<1)end_day=1;if(start_day>monthDays(start_month,start_year))start_day=monthDays(start_month,start_year);if(end_day>monthDays(end_month,end_year))end_day=monthDays(end_month,end_year);// swap dates if start date before end dateintswapDates=0;if(end_year<start_year){swapDates=1;}if(end_year==start_year){if(end_month<start_month){swapDates=1;}}if(end_year==start_year){if(end_month==start_month){if(end_day<start_day){swapDates=1;}}}if(swapDates){intt=end_month;end_month=start_month;start_month=t;t=end_day;end_day=start_day;start_day=t;t=end_year;end_year=start_year;start_year=t;}// calculate daysif(start_month==end_month){if(start_year==end_year){days=end_day-start_day;}}else{days+=monthDays(start_month,start_year)-start_day;days+=end_day;if(start_year==end_year){intmonth=start_month+1;while(month<end_month){days+=monthDays(month,start_year);month++;}}else{intyear;intmonth=start_month+1;while(month<=12){days+=monthDays(month,start_year);month++;}month=1;while(month<end_month){days+=monthDays(month,end_year);month++;}year=start_year+1;while(year<end_year){days+=365;if(isLeapYear(year))days++;year++;}}}returndays;}
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.