C语言 找到N天后的日期



我正在寻找一种算法来查找未来某一天的日期,即从今天起N天内的日期。

我的主要问题是如何处理中间的闰年

如果我对你的问题理解正确,你最好的选择是这样做:

  1. 将日期转换为数字,其中数字表示从特定日期到现在的天数
  2. 将N添加到该数字
  3. 将结果转换回日期

您可以使用日期的儒略历日数来执行此操作。

参见维基百科关于儒略历日数(JDN)的文章了解更多信息。

话虽如此,如果你正在使用一种现代的编程语言,大多数已经有处理日期的工具了,比如Java, c#/。. NET、Python等

这高度依赖于您在开发中使用的语言和框架,因为大多数框架都有一些方法来处理此问题。例如,在。net中,这是非常简单的:

DateTime futureDate = DateTime.Today.AddDays(numberOfDaysInFuture);

下面是用于http://reqr.net/cal计算日偏移量的ruby代码:https://gist.github.com/910427

算法本身与语言无关,只使用基本类型

秒是你的朋友。伪代码,无论你使用什么语言:

seconds_since_1970_to_date(date_to_seconds_since_1970(currentdate) + N * 86400)

Transact-SQL (MS SQL Server)提供了DATEADD函数。例如:

DECLARE @days int;
DECLARE @datetime datetime;
SET @days = 365;
SET @datetime = '2000-01-01 01:01:01.111'; /* 2000 was a leap year */
SELECT DATEADD(day, @days, @datetime);

--RESULT: 2000-12-31 01:01:01.110

既然您正在寻找C解决方案,请在自己重新实现所有内容之前检查ctime.h是否不适合您的需求。

参见

C或c++中日历日期的运算(在给定日期上加N天)

https://en.wikipedia.org/wiki/C_date_and_time_functions

http://www.cplusplus.com/reference/ctime/

http://en.cppreference.com/w/c/chrono

相关内容

  • 没有找到相关文章

最新更新