c++向日期添加或减去值

标签 c++ date time add

我不知道如何为日期添加值。想象一下,我有一个像 2012-5-15 这样的日期。在我解析它之后,我分别获得了年、月和日,我试图通过使用 time_t 和 mktime 将我的确切日期转换为天数。我有机会把它从我找到的天数或秒数转换回日期吗?这是我尝试执行此操作的部分代码;

if(operation="+"){
    tm tm1=make_tm(year,mon,day);
    time_t time1=mktime(&tm1);
    int seconds_per_day=60*60*24;
    time_t second=time1/seconds_per_day;
    int sum=second //Trying to convert to the int from my time_t, don't know      
                   //if it is neccesary
    sum=sum+value //the value I want to add 

所以,基本上如果我提供像 2012/5/15 这样的输入。它使用该方法计算它过去了多少天,但我只需要将它转换为日期并显示出来。你有什么想法吗?

最佳答案

如果您正在寻求一种方法来将天数添加到特定日期,这里有一种与您的尝试类似的方法:

tm addDays(tm t1, int days)
{
    time_t epoch = mktime(&t1);
    epoch += (60*60*24 * days);
    return *localtime(&epoch);
}

然后使用返回的tm结构,访问tm_yeartm_montm_mday成员得到yyyymmdd 需要输出。一个非常粗略和现成的例子(没有正确的格式):

tm t1;
std::fill((char*)&t1, (char*)&t1 + sizeof(t1), 0);
t1.tm_year = 2016;
t1.tm_mon = 8;
t1.tm_mday = 2;

auto result = addDays(t1, 30);

std::cout << result.tm_year << '/' << result.tm_mon << '/' << result.tm_mday << std::endl;

关于c++向日期添加或减去值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722589/

相关文章:

javascript - 如何从日期/时间戳中减去两个不同的日期?

Pandas - 将具有开始和结束日期的数据帧转换为每日数据

python - 将列表从纪元转换为人类可读时间

C++ ADO 连接池

c++ - C++ Singleton没有为该文档加载符号

c++ - 同时使用 const 和 non-const 进行参数传递

sql - Bigquery iso8601 字符串转时间戳

c++ - 有什么方法可以禁用特定代码行的编译器优化?

python - 我想生成连续的日期

Python 将时间字符串转换为刻度?