首页 > 编程知识 正文

日期换算成天数公式,c语言年月日转化为天数

时间:2023-05-05 13:40:02 阅读:172164 作者:4753

我在网上看到了计算日期间隔的方法,乍一看很高级,仔细看是更高的神,很巧妙。 先直接去代码吧:

# include stdio.h # include stdlib.hint day _ diff (int year _ start,int month_start,int day_start,int year _ end m1=(month_start9) % 12; y1=year_start - m1/10; D1=365 * y1y1/4-y1/100y1/400 (m1 * 3065 )/10 ) Day_Start-1 ); m2=(month_end9) % 12; y2=year_end - m2/10; D2=365 * y2y2/4- y2/100y2/400 (m2 * 3065 )/10 ) Day_end-1 ); return(D2-D1 ); (intmain ) void ) printf('%dn”,day_diff ) 2015、1、1、2015、1、8 ) ); printf(%d(n ),day_diff ) 2015、1、29、2015、2、9 ); 返回0; }

算法解析

该算法的总体思想是计算从指定日期到0年3月1日的天数,减去,获取天数的间隔。

m1=(month_start9) % 12; 用于确定日期是否大于3月。 2月是判断闰年的标志。 它还用于记录到3月为止的间隔月数。

y1=year_start - m1/10; 对于1月和2月,不包括当前年份。 因为是到0年3月1日为止的计算天数。

D1=365 * y1y1/4-y1/100y1/400 (m1 * 3065 )/10 ) Day_Start-1 );

其中365*y1不是闰年只在那一天增多的天数,

y1/4 - y1/100 y1/400是添加所有闰年的日子。

(m2*306 5 )/10用于计算从当前的月到3月1日的天数,306=365-31-28(1月和2月),5是全年非31天的月的个数

(day_start - 1 )用于计算从当前日期到一天的间隔天数。

测试运行结果:

与日期得到的第一天不同的天数代码如下。 # include ' STD afx.h ' voidcomputingtime (intday number,int * data ) { int i=0; int days=0; int days2=0; 年=1972; int supDay=0; 输入日期=0; intday1[ ]={ 31,28,31,30,31,31,30,31,30,31,30,30,31 }; intday2[ ]={ 31,29,31,30,31,31,30,31,30,31,31,30,30,31,31 }; intmonth [ ]={ 1,2,3,4,5,6,7,8,9,10,11,12 }; days=(daynumber1); while(1) if ) days=366 ) { break; (if ) ) I1972 ) 400==0| ) )4==0) I1972 ) % 100!=0) ) { days -=366; } else { days -=365; (I ); (if ) ()! (i 1972 ) ) 400==0||) ) i 1972 ) %4==0) i 1972 ) % 100!=0) ) ) (days==366 ) ) year=(I1 ); 数据[0]=年; 日期=1; } else { year =i; 数据[0]=年; (for ) I=0; i 12; I ) if(year@0==0|(year%4==0year0!=0) ) if(days=day2[I] ) { data[1]=month[i]; 数据[2]=天; 黑; } days=days - day2[i]; }else{if(days=day1[I] ) { data[1]=month[i]; 数据[2]=天; 黑; } days=days - day1[i]; } } days2=dayNumber; Today=(days26 ) % 7; if(Today==0) { data[3]=7; } else { data[3]=today; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。