现在查找N天的日期

时间:2011-04-08 18:18:03

标签: c algorithm datetime

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

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

7 个答案:

答案 0 :(得分:4)

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

  1. 将日期转换为数字,其中数字表示自特定日期以来的天数
  2. 将N添加到该号码
  3. 将结果转换回日期
  4. 您可以使用日期的朱利安日号来执行此操作。

    有关详细信息,请参阅Wikipedia article on Julian Day Number (JDN)

    话虽如此,如果您实际使用的是现代编程语言,大多数都有处理日期的工具,例如Java,C#/ .NET,Python等。

答案 1 :(得分:1)

这高度依赖于您用于开发的语言和框架,因为大多数框架都有一些方法可以解决这个问题。例如,在.NET中,这很容易:

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

答案 2 :(得分:0)

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

算法本身是语言无关的,只使用原始类型。

答案 3 :(得分:0)

秒是你的朋友。无论您使用何种语言的伪代码:

seconds_since_1970_to_date(date_to_seconds_since_1970(currentdate) + N * 86400)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)