2011-04-08 21 views
1

我正在尋找算法來查找今後一天的日期,這是距離今天N天的時間。到目前爲止N天內查找日期

我的主要問題是如何處理中間的閏年。

+1

? – 2011-04-08 18:20:44

+0

例如,C. – 2011-04-08 18:27:27

回答

4

如果我正確地把你的問題,你最好的選擇是做到以下幾點:

  1. 轉換日期爲一個數字,其中數字表示的數自特定日期起的天數
  2. 將N加到該數字
  3. 將結果轉換回日期

您可以使用茱莉安日的號碼做日期。

查看Wikipedia article on Julian Day Number (JDN)瞭解更多信息。

說了這麼多,如果你實際上使用的是最新的編程語言,最有設施已經處理日期,如Java,C#/。NET,Python等

0

秒是你的朋友。對於僞任何語言使用的是:

seconds_since_1970_to_date(date_to_seconds_since_1970(currentdate) + N * 86400)

1

這在很大程度上取決於用什麼語言和框架您正在使用您的開發,因爲大多數的框架有一些方法來處理這個問題。例如,在.NET中,這是很容易的:

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

C也有這樣的功能嗎?! 我應該包括什麼? – 2011-04-08 18:30:17

+0

@Saba:在C中查看日期和時間:http://www.codeproject.com/KB/datetime/datetimedisc.aspx – 2011-04-08 18:37:46

0

的Transact-SQL(MS SQL服務器)提供了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

0

既然你正在尋找一個C的解決方案,看看ctime.h是否不符合你的需求,然後再重新實現你自己的一切。

相關問題