C++中判断某年某月一号是星期几,怎么判断啊

星星之光 2011-12-03 11:41:22
C++中判断某年某月一号是星期几,怎么判断??????????????
...全文
816 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbysjw 2011-12-04
  • 打赏
  • 举报
回复

y:年(年的低两位数);

以2005年2月14日为例:c=20,y=4,m=14,d=14

这样算 y = 5;

piggy 2011-12-04
  • 打赏
  • 举报
回复
mm11214014 2011-12-04
  • 打赏
  • 举报
回复
嗯,就是这个公式,顶起[Quote=引用 3 楼 hongwenjun 的回复:]

有个蔡勒(Zeller)公式,可以计算某年某月是星期几
还有 星期几 是从 新历开始的,某年之前的星期几 都不准

C/C++ code
计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下:
c:世纪(年的高两位数);
y:年……
[/Quote]
量化分析 2011-12-04
  • 打赏
  • 举报
回复
goood
  • 打赏
  • 举报
回复
用算法啊,比如你可以把今天的日期输入:2011年12月4日是星期日,那就把今天的日期转成一个数字,再减去输入的日期,这样再除7就差不多了吧,这个转换要用函数式子来进行的,你好好想一会就行了
heloworld404 2011-12-04
  • 打赏
  • 举报
回复
3楼那个最快最方便了!!!
hongwenjun 2011-12-04
  • 打赏
  • 举报
回复
有个蔡勒(Zeller)公式,可以计算某年某月是星期几
还有 星期几 是从 新历开始的,某年之前的星期几 都不准

计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下:
c:世纪(年的高两位数);
y:年(年的低两位数);
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月
来计算,比如2005年1月1日要看作2004年的13月1日来计算);
d:日;
[]代表取整,即只要整数部分。
w:星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,
5-星期五,6-星期六

以2005年2月14日为例:c=20,y=4,m=14,d=14
w = 4 + [4/4] + [20/4] - 2*20 + [26*(14+1)/10] + 14 - 1
= 4 + 1 + 5 - 40 + 39 + 14 - 1
= 22 (除以7余1)
所以2005年2月14日是星期一。
qwer_boo 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hongwenjun 的回复:]

有个蔡勒(Zeller)公式,可以计算某年某月是星期几
还有 星期几 是从 新历开始的,某年之前的星期几 都不准

C/C++ code
计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下:
c:世纪(年的高两位数);
y:年……
[/Quote]这个真棒 果断收藏
bjbjbh 2011-12-04
  • 打赏
  • 举报
回复
先算出是第几天,然后除7求余就是啦
qq120848369 2011-12-04
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

//struct tm *gmtime(const time_t *timep);
//time_t mktime(struct tm *tm);
int main()
{
struct tm gm_time;
struct tm *ret_time;
int year, month, day;

memset(&gm_time, 0, sizeof(gm_time));

while (scanf("%d%d%d", &year, &month, &day) == 3)
{
gm_time.tm_year = year - 1900;
gm_time.tm_mon = month - 1;
gm_time.tm_mday = day;

time_t sec_time = mktime(&gm_time);
ret_time = localtime(&sec_time);
printf("it is %d days after Sunday :\n%s", ret_time->tm_wday, asctime(ret_time));
}

return 0;
}
JieTouLangRen 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hongwenjun 的回复:]

有个蔡勒(Zeller)公式,可以计算某年某月是星期几
还有 星期几 是从 新历开始的,某年之前的星期几 都不准

C/C++ code
计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下:
c:世纪(年的高两位数);
y:年……
[/Quote]
++
yujie_v 2011-12-04
  • 打赏
  • 举报
回复
有算法的。这个很多地方都有介绍的
ccooldog 2011-12-04
  • 打赏
  • 举报
回复
学习了~ 3楼不错
tony2278 2011-12-04
  • 打赏
  • 举报
回复
3楼的主意不错!
Kevin_Perkins 2011-12-03
  • 打赏
  • 举报
回复
选择好一个判断基准来推算。

64,634

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧