首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将确定星期几的公式转换为C++的正确方法是什么?

将确定星期几的公式转换为C++的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-04-29 02:04:20
回答 1查看 45关注 0票数 0

我有一个任务,我需要弄清楚日期是/现在是一周中的哪一天。Wikipedia上的公式如下

哪里

代码语言:javascript
复制
d = day (1-31)  
m = month (starting with March = 1 up to February=12)  
y = last 2 digits of a year  
c = first 2 digits of a year  

(如果月份是1月或2月,y和c必须减1)

我的函数如下:

代码语言:javascript
复制
int wochentagWiki(int inttag, int intmonat, int intjahr) {
int d = inttag;

int m = 0;

switch (intmonat) {
case 1:
    m = 11;
    break;
case 2:
    m = 12;
    break;
case 3:
    m = 1;
    break;
case 4:
    m = 2;
    break;
case 5:
    m = 3;
    break;
case 6:
    m = 4;
    break;
case 7:
    m = 5;
    break;
case 8:
    m = 6;
    break;
case 9:
    m = 7;
    break;
case 10:
    m = 8;
    break;
case 11:
    m = 9;
    break;
case 12:
    m = 10;
    break;
}

int y = intjahr % 100;
if (intmonat == 1 || intmonat == 2) {
    y--;
}

int c = intjahr / 100;
if (intmonat == 1 || intmonat == 2) {
    c--;
}

int w = (d + (2.6 * m - 0.2) + y + (y / 4) + (c / 4) - (__int64)2 * c) % 7;

return w;
}

我的问题是w总是返回一个错误的值,我想这是因为我把公式翻译错了。把它写下来的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 04:47:04

在我看来,你在抄写公式时犯了一个错误:

(如果月份是1月或2月,y和c必须减1)

但是Wikipedia说:

  • Y是1月或2月的年份减1,任何其他月份的年份
  • y是Y的后2位数字,
  • c是Y

的前2位数字

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61486929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档