首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++数据算法

问C++数据算法
EN

Stack Overflow用户
提问于 2014-09-25 02:44:30
回答 2查看 224关注 0票数 2

我一直很难解决这个问题,也许有人能帮忙或提供建议。这就是问题所在。我将月份、日和年份作为int存储。我想要能够添加一个固定的天数到一个日期,并得到一个新的日期。我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-25 06:04:20

假设你这么做是为了学习(外面有很多日期库).你到底有什么问题?该算法实际上并不十分复杂,听起来如下:

  1. 将天数添加到日期的day字段
  2. 如果现在的天数超过了允许的最大天数(例如,您的日期类似于april 134, 2014),那么就用月份的天数减少天数并增加月份的天数:例如,4月有30天,所以日期变成may 104 2014
  3. 重复步骤2,直到这个月的天数确定为止(june 73,july 43,august 12)

棘手之处在于

  1. 二月的天数取决于有一个奇怪规则的年份(如果不是这样的话,year%4==0 && (year%100!=0 || year%400==0)是29天)。
  2. 在增加月份时,您可能会超过12月,在这种情况下,可以追溯到1月,但增加一年。

这不是最快的方法(需要在几个月内循环),但实现起来并不困难。

票数 1
EN

Stack Overflow用户

发布于 2014-09-25 05:40:46

使用boost date_time:

代码语言:javascript
复制
date d1(2014, 9, 25);
date_duration dd(10);
date d2 = d1 + dd;

这是2014年9月25日之后的10天。我觉得再好不过了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26029670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档