现在查找N天的日期

我正在寻找一种算法来查找未来一天的日期,这是从今天开始的N天。

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

如果我正确地回答您的问题,您最好的选择是执行以下操作:

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

您可以使用朱利安日期号来表示日期。

有关更多信息,请参阅有关Julian Day Number(JDN)的Wikipedia文章 。

话虽如此,如果你实际上使用的是现代编程语言,大多数都有处理日期的工具,比如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)提供DATEADDfunction。 例如:

 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是否不符合您的需求。