我正在尝试编写一个输入日期(" 2000-01-01")以及" y | m | d"的算法,其中y是添加到原始日期的年数,m和d是月和日。该算法也需要考虑闰年。抱歉,我还没有发布任何代码,但我还没有真正有效的工作。
该算法也需要像这样工作:如果你在11月30日增加三个月,你将在明年2月28日,如果是闰年,你将获得29。因此,如果您来自的月份长度高于最终结果月份,则将采用最终结果月份的最后一天。
有人可以给我一些关于如何编写或链接到任何有用资源的指示吗?
我希望这是有道理的,任何问题都让我知道。感谢。
答案 0 :(得分:1)
你似乎很清楚这个问题。以下是查找闰年的算法:
if year is not divisible by 4 then common year
else if year is not divisible by 100 then leap year
else if year is not divisible by 400 then common year
else leap year
答案 1 :(得分:0)
大多数(如果不是全部)您需要的内容都可以在<ctime>
库(http://www.cplusplus.com/reference/ctime/)中找到。
请特别查看time_t
和struct tm
类型以及如何在两者之间进行转换(localtime()
,gmttime()
,...)。请注意,您可以在struct tm
中的字段中添加天,小时,月等,并且可以正确处理它们,例如,“1月32日”变为“2月1日”。
<ctime>
库也处理闰年。
你添加3个月的方式似乎不是传统的,所以你可能需要手动检查。使用<ctime>
。
编辑:在有人抱怨<ctime>
是c ++之前,在普通c中,这个库位于<time.h>
。