您的位置:首页 > 其它

怎么知道现在是星期几?是今年的第多少天、分、秒?

2011-03-18 17:04 447 查看
/*************
*author :vinco zhang
*e-mail: xuyunzhang693@qq.com
*concentrate on both hardware and software of Embeded OS

* date:2011-03-16
*all right reserved
************/
#include<stdio.h>
#include<math.h>// abs()
struct time__
{
int year;
int month;
int day;
int weekday;
int hour;
int minute;
int second;
};
typedef struct time__ time_;

int leap_year(int year)//1:leap year 0: no leap year
{
return( (year%400==0) || ( (year%100!=0) && (year%4==0) ) );
}
int get_dayth(time_ time)
{
int imonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i=1,dayth=0;

if(leap_year(time.year)==1) imonth[1]=29;

while(i < time.month)
dayth=dayth+imonth[(i++)-1];
dayth+=time.day;
return(dayth);
}
int year_days(int year)
{
int imonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(leap_year(year)==1) imonth[1]=29;
int sum_days=0,i=0,dayth=0;
while(i<12) sum_days+=imonth[i];
return(sum_days);
}
int left_days(time_ time)
{
int imonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(leap_year(time.year)==1) imonth[1]=29;
int sum_days=0,i=0,dayth=0;
while(i<12) sum_days+=imonth[i];
i=1;
while(i < time.month) dayth=dayth+imonth[(i++)-1];
dayth+=time.day;
return(sum_days-dayth);
}
int get_hourth(time_ time)
{
int dayth=0,hourth=0;

dayth=get_dayth(time);
hourth=dayth*24+time.hour;
return(hourth);
}
int get_minuteth(time_ time)
{
int dayth=0,minuteth=0;

dayth=get_dayth(time);
minuteth=dayth*(24*60)+time.hour*60+time.minute;
return(minuteth);
}

int get_secondth(time_ time)
{
int dayth=0,secondth=0;

dayth=get_dayth(time);
secondth=dayth*(24*60*60)+time.hour*(60*60)+time.minute*60;
return(secondth);
}
int delta_days(time_ time0,time_ time)
{
int year=0,days=0;
if(time.year-time0.year<0)
{
year=time.year;
days+=left_days(time);
while((year) < time0.year) days+=year_days(year++);
days+=get_dayth(time0);
}
else if(time.year-time0.year>0)
{
year=time0.year;
days+=left_days(time0);
while((year) < time.year) days+=year_days(year++);
days+=get_dayth(time);
}
else
{
days=abs(get_dayth(time0)-get_dayth(time));
}
return(days);
}
int time_compare(time_ time0,time_ time)//1:time0 > time 0:time0=time -1:time0?<time
{
int year=0,days=0;
if(time0.year > time.year) return 1;
else if(time0.year < time.year) return -1;
else
{
if(get_secondth(time0) > get_secondth(time)) return 1;
else if(get_secondth(time0) < get_secondth(time)) return -1;
else return 0;
}
}
int get_weekday(time_ time)
{
time_ time0={2011,3,16,3,14,5,6};
int year=0,weekday=0;
int i=1;
int days=delta_days(time0,time);
weekday=time0.weekday;

if(time_compare(time0,time)==1)//time0>time
{
while(i<=days)
{
if((weekday)>1) weekday--;
else weekday=7;
i++;
}
time.weekday=weekday;
}
if(time_compare(time0,time)==-1)//time0<time
{
weekday=(time0.weekday+days)%7;
time.weekday=weekday;
}

return(weekday);
}
int main()
{
time_ time0={2011,3,16,3,14,5,6};
time_ time={2011,3,14,2,14,5,6};

int dayth=get_dayth(time0);
int hourth=get_hourth(time0);
int minuteth=get_minuteth(time0);
int secondth=get_secondth(time0);
int weekday=get_weekday(time);
int delta_day=delta_days(time0,time);

printf("dayth=%d/n",dayth);
printf("hourth=%d/n",hourth);
printf("minuteth=%d/n",minuteth);
printf("secondth=%d/n",secondth);
printf("weekday=%d/n",weekday);
printf("delta_days=%d/n",delta_day);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: