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

/*************
*author :vinco zhang
*e-mail: [email protected]
*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;
}

你可能感兴趣的:(怎么知道现在是星期几?是今年的第多少天、分、秒?)