【发布时间】:2020-12-16 21:40:15
【问题描述】:
我正在使用这里的代码:https://www.geeksforgeeks.org/find-day-of-the-week-for-a-given-date/。它找到日期所在的星期几。输出是对应于星期几的数字,但我希望它说“星期一”而不是“1”。怎么改?
#include <iostream>
using namespace std;
int dayofweek(int d, int m, int y)
{
static int t[] = { 0, 3, 2, 5, 0, 3,
5, 1, 4, 6, 2, 4 };
y -= m < 3;
return ( y + y / 4 - y / 100 +
y / 400 + t[m - 1] + d) % 7;
}
int main()
{
int day = dayofweek(03, 02, 2020);
cout << day << endl;
return 0;
}
【问题讨论】:
-
一种方法是在
nameOfDay[1] == "Monday"处创建一个字符串数组或向量,然后你可以输出nameOfDay[day]。 -
为什么不使用 case 或 if-else 来映射数字和天数?
-
旁注:
mktime和现代 C++ 的 Date and time utilities 也可以让您获得很多乐趣 -
提示:避免返回带有极端
y,m,d的负值。% 7-->% 7u. -
公共服务公告。该算法假定一个预测的公历。也就是说,它在引入之前向后应用公历规则(这很好,并且由 ISO 8601 推荐)。它的有效期为 0000-03-01。在此之前,它给出了错误的结果。它在未来数百万年内有效。