【发布时间】:2015-02-01 04:56:42
【问题描述】:
您好,我正在尝试使用用户输入的天数来计算一个人的生日。我对 ctime 库有点陌生,但我想出的是两个日期之间的差异来获得天数。据我所知,我确实了解 ctime;我知道 ctime 有一个内置的 struct tm,它由 min、secs、hour、day、month 和 year 组成。我尝试使用 asctime 将它们单独放置,但这使我的逻辑更加混乱。我使用 difftime 来查找日期之间的差异。像这样:
struct tm a = { 0, 0, 0, 1, 1, 91 }; /* my birthday */
struct tm b = { 0, 0, 0, 3, 11, 114 }; /* today's date */
time_t x = mktime(&a);
time_t y = mktime(&b);
if (x != (time_t)(-1) && y != (time_t)(-1))
{
double days = difftime(y, x) / (60 * 60 * 24);
cout << ctime(&x);
cout << ctime(&y);
cout << "difference = " << days << " days" << endl;
}
输出是:差异 = 8706 天
问题是用户输入 8706 天来获得我的生日或他们的生日。如果有意义,则此代码相反。你能帮我弄清楚解决问题的逻辑吗?
【问题讨论】: