有人知道如何将日期与日期字符串进行比较吗。听起来似乎很混乱,但是我想到了这一点。希望代码能清除所有内容
#include <iostream>
#include <ctime>
int main()
{
/// current date/time based on current system
time_t now = time(0);
/// convert now to string form
tm *ltm = localtime(&now);
cout << "The local date and time is: " << ltm << endl;
if(*ltm == "Mon") Monday();
else if(*ltm == "Tue") Tuesday();
else if(*ltm == "Wed") Wednesday();
else if(*ltm == "Thu") Thursday();
else if(*ltm == "Fri") Friday();
else if(*ltm == "Sat" || *ltm == "Sun") Monday();
return 0;
}
那是巨大的错误消息板之一,我只给出那一行,因为其余错误相同,只是针对不同的行。
/home/shadowdragon/Documents/uktc_schdule/UKTC_schedule/main.cpp|90|error: no match for ‘operator==’ (operand types are ‘tm’ and ‘const char [4]’)|
答案 0 :(得分:0)
您甚至不需要将其与字符串进行比较(即
const char*
)...<ctime>
提供了自己的比较所有内容的方法...
首先,创建一个枚举器,以跟踪一周中的所有天(0-6),
enum
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
现在像这样检查它:
if (*ltm.tm_wday == Sunday)
std::cout << "Its Sunday!" << std::endl;
其他日子也要这么做...
仔细观察,您会发现结构成员 tm_wday 返回的数字介于 0-6 ( Sunday 至< em> Monday )和 enumerator只是为了澄清它 ...(这样您就不会与if (*ltm.tm_wday == 0 /*Sunday*/)
或类似的东西混淆了……)< / p>
详细了解 tm 结构here ...
甚至还有C ++的替代方案here ...
注意::std::tm
为您提供准确的UTC时间,因此建议将其检出,并使用this function代替指出的localtime()
在评论部分...
const char * GetDay(struct tm * tm)
{
switch (tm->tm_wday)
{
case 0:
return "Sun";
case 1:
return "Mon";
case 2:
return "Tue";
case 3:
return "Wed";
case 4:
return "Thu";
case 5:
return "Fri";
case 6:
return "Sat";
default: return "";
}
}
然后执行以下操作:
if (GetDay(ltm) == "Sun")
std::cout << "Its Sunday again!" << std::endl;
亲切的问候,
Ruks。