如何算当前是一年的第几周? 好象没有标准算法
怎么算当前是一年的第几周? 好象没有标准算法?
怎么算当前是一年的第几周? 好象没有标准算法?
------解决方案--------------------
好像没有,只能找个日期然后自己推出来第几周
------解决方案--------------------
标准算法?!
汗,要是什么都有“标准”算法,还要我们干嘛呢
------解决方案--------------------
你要写哪一年的?
------解决方案--------------------
周日是一个星期的第一天
------解决方案--------------------
我看过一个程序,是这样算的:
确定一个参考日期,比如1900年的1月1日,当时是星期几。
然后根据公历的算法,求出要求的日期距离参考日期的总天数,
再用总天数对7(一周的天数)求余,就可以求得当前是星期几了。
------解决方案--------------------
lxbluedream() ( ) 信誉:100 Blog 2007-1-19 17:31:03 得分: 0
我看过一个程序,是这样算的:
确定一个参考日期,比如1900年的1月1日,当时是星期几。
然后根据公历的算法,求出要求的日期距离参考日期的总天数,
再用总天数对7(一周的天数)求余,就可以求得当前是星期几了。
------解决方案--------------------
前些时候刚好实现了这么个函数,用的c#,因为已经有了库函数,所以偷了个懒,用的本年的1月1号的礼拜,不过方法总是差不多的
//取得當年第一天的時間信息
DateTime Year1stDay = new DateTime((int)DateTime.Today.Year, 1, 1);
//因為禮拜天返回的值是0,所以需要自行更改為 7
int daybase = ((int)Year1stDay.DayOfWeek == 0) ? 7 : (int)Year1stDay.DayOfWeek;
int dayadd = (int)DateTime.Today.DayOfYear - 1;
int weekadd = (dayadd % 7 + daybase) > 7 ? 1 : 0;
//week的起始值是 1,所以需要額外加 1
int week = dayadd / 7 + weekadd + 1;
return mon + " " + DateTime.Today.Year + ",Week " + week;
------解决方案--------------------
main()
{
int day,month,year,sum,leap;
printf( "\nplease input year,month,day\n ");
scanf( "%d,%d,%d ",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf( "data error ");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month> 2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf( "It is the %dth day. ",sum);}
怎么算当前是一年的第几周? 好象没有标准算法?
------解决方案--------------------
好像没有,只能找个日期然后自己推出来第几周
------解决方案--------------------
标准算法?!
汗,要是什么都有“标准”算法,还要我们干嘛呢
------解决方案--------------------
你要写哪一年的?
------解决方案--------------------
周日是一个星期的第一天
------解决方案--------------------
我看过一个程序,是这样算的:
确定一个参考日期,比如1900年的1月1日,当时是星期几。
然后根据公历的算法,求出要求的日期距离参考日期的总天数,
再用总天数对7(一周的天数)求余,就可以求得当前是星期几了。
------解决方案--------------------
lxbluedream() ( ) 信誉:100 Blog 2007-1-19 17:31:03 得分: 0
我看过一个程序,是这样算的:
确定一个参考日期,比如1900年的1月1日,当时是星期几。
然后根据公历的算法,求出要求的日期距离参考日期的总天数,
再用总天数对7(一周的天数)求余,就可以求得当前是星期几了。
------解决方案--------------------
前些时候刚好实现了这么个函数,用的c#,因为已经有了库函数,所以偷了个懒,用的本年的1月1号的礼拜,不过方法总是差不多的
//取得當年第一天的時間信息
DateTime Year1stDay = new DateTime((int)DateTime.Today.Year, 1, 1);
//因為禮拜天返回的值是0,所以需要自行更改為 7
int daybase = ((int)Year1stDay.DayOfWeek == 0) ? 7 : (int)Year1stDay.DayOfWeek;
int dayadd = (int)DateTime.Today.DayOfYear - 1;
int weekadd = (dayadd % 7 + daybase) > 7 ? 1 : 0;
//week的起始值是 1,所以需要額外加 1
int week = dayadd / 7 + weekadd + 1;
return mon + " " + DateTime.Today.Year + ",Week " + week;
------解决方案--------------------
main()
{
int day,month,year,sum,leap;
printf( "\nplease input year,month,day\n ");
scanf( "%d,%d,%d ",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf( "data error ");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month> 2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf( "It is the %dth day. ",sum);}