我正在寻找一种算法来查找将来的某一天的日期,这是从今天开始的N天。
我的主要问题是如何处理中间的闰年。
答案 0 :(得分: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)