现在查找N天的日期
我正在寻找一种算法来查找未来一天的日期,这是从今天开始的N天。
我的主要问题是如何处理中间的闰年。
如果我正确地回答您的问题,您最好的选择是执行以下操作:
- 将日期转换为数字,其中数字表示自特定日期以来的天数
- 将N添加到该数字
- 将结果转换回日期
您可以使用朱利安日期号来表示日期。
有关更多信息,请参阅有关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是否不符合您的需求。
看到
使用C或C ++在日历日期上的算术(在给定日期添加N天)
https://en.wikipedia.org/wiki/C_date_and_time_functions