当前位置:  开发笔记 > 编程语言 > 正文

在C/C++中添加1个月到time_t的简单方法

如何解决《在C/C++中添加1个月到time_t的简单方法》经验,为你挑选了2个好方法。

我有一些代码使用Oracle函数add_months将Date增加X个月.

我现在需要在C/C++函数中重新实现相同的逻辑.由于我不想/需要进入的原因,我不能简单地向oracle发出查询以获取新日期.

有没有人知道在time_t中添加X个月的简单可靠的方法?计算类型的一些示例如下所示.

30/01/2009 + 1个月= 28/02/2009
31/01/2009 + 1个月= 28/02/2009
27/02/2009 + 1个月= 27/03/2009
28/02/2009 + 1个月= 31/03/2009
31/01/2009 + 50个月= 31/03/2013



1> Pieter..:

你可以使用Boost.GregorianDate.

更具体地说,通过添加正确的确定月份date_duration,然后使用end_of_month_day()日期算法


因为"只有在复杂性的另一面才能找到简单性".time_t根本没有足够的信息来说明他在他的例子中要求的上下文类型.在函数中使用boost来进行转换,然后转换回time_t对我来说似乎是合理的.

2> MSalters..:

转换time_tstruct tm,将X添加到月份,添加月份> 12到年,转换回来.tm.tm_mon是一个int,添加32000+个月应该不是问题.

[edit]你可能会发现,一旦你遇到更难的情况,匹配甲骨文就很棘手,比如在2002年2月29日增加12个月.2009年1月3日和28/02/2008都是合理的.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有