怎么知道现在是星期几?是今年的第多少天、分、秒?
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;
}
*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;
}
相关文章推荐
- 我是27岁改行进入IT的,那些总说该怎么样怎么样的人,应该知道怎么做了吧! 现在开始还不晚!
- 不查日历怎么知道任何一天是星期几
- 现在250pp怎么上不去了啊 可急死寡人的 有知道的吗
- 你知道微商是怎么进化来的吗?
- 妈的 node js 用到现在居然不知道安装时怎么回事呢,郁闷。
- 你知道现在的.net是什么样的吗,一张图告诉你
- 记住一句话,阅读优秀的代码可以知道怎么写,做项目,可以解决问题!
- 你真的知道怎么创建一个长度为n的有序数组吗?
- 知道指针地址 , 怎么取出指针指向的内容??? 0x7fff5fbff564 这种值 怎么赋值给一个变量??
- 深刻:现在计算机专业学生怎么这样
- godaddy的空间 抽风掉包怎么老是这样抽风,电信抽完了,现在又轮到网通了
- java api 文档出中文版的,到现在才知道
- [Robot Framework] Robot Framework里面的变量怎么知道是在哪里定义的?
- 从八月走到现在,接下来该怎么走? 继续……
- 现在,我们该怎么创业
- 现在怎么对技术提不起劲来呢?
- 遇到一个很奇怪的问题,现在仍然没想到是怎么弄的。(有图无真相)
- 我也不知道标题该怎么写
- delphi 中怎么知道某一个月有多少天
- 你们知道现在谁是程序员中口碑最差的男艺人吗?