gpt4 book ai didi

c++ - 计算当前日期和用户输入日期之间的天数问题

转载 作者:行者123 更新时间:2023-11-28 05:11:38 25 4
gpt4 key购买 nike

该程序的主要目标是能够向用户询问日期,例如他们的生日,然后输出他们存活的天数。

所以我在这里遇到的主要问题是试图弄清楚如何制作它,以便程序知道一个月和一年有多少天。

我要求用户以数字格式(例如 1 1 2000)输入当前的日期、月份和年份

现在,当您添加 betweenYear、betweenDay 和 betweenMonth 的结果时,它只给我大约 40 天,具体取决于我输入的年份,实际上它应该是数千天。我知道这是因为当向用户询问此信息时,程序不知道这些是实际日期,而只是数字。我不知道如何获取用户信息并将它们转换为程序中的实际日期,而不仅仅是普通整数

所以我的问题是:如何定义一个月中的天数和一年中的天数,同时仍然使用用户输入的数字。

我只放了我认为必要的代码部分。 (我对此还是很陌生,我已经做了很多研究,但未能找到足够简单让我理解的示例。)

int main()
{
cout << "Please Enter the day you were born. (EX 1-31) ";
cin >> day;

cout << "Please Enter the month you were born. (EX 1-12) ";
cin >> month;

cout << "Please Enter the year you were born. (EX 1990)";
cin >> year;

time_t t = time(NULL);
tm* timePtr = localtime(&t);

betweenYear = (timePtr->tm_year + 1900) - year;
betweenDay = timePtr->tm_mday - day;
betweenMonth = timePtr->tm_mon - month;

最佳答案

我建议使用标准库来处理与时间相关的问题。

#include <ctime>

using namespace std;

const long long SECONDS_PER_DAY = 3600L * 24L;

long long days_since(int year, int month, int day) {
// Current time since epoch
time_t now = time(nullptr);

// Convert year, month and day to a tm object
tm beg = *localtime(&now);
beg.tm_year = year - 1900;
beg.tm_mon = month - 1;
beg.tm_mday = day;

// difftime returns seconds
time_t bd = mktime(&beg);
return static_cast<long long>(difftime(now, bd))/SECONDS_PER_DAY;
}

关于c++ - 计算当前日期和用户输入日期之间的天数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com