2016-07-13 117 views
-6

我需要幫助才能獲得當前日期的六個月範圍。例如,如果當前日期是02-Feb-2016那麼我想要開始日期01-Sep-2015和結束日期29-Feb-2016如何獲得確切的6個月的日期範圍?

我已經試過代碼:

DateTime date = new DateTime(2016,02,06); 
DateTime endDate = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1); 
DateTime startDate = endDate.AddMonths(-6); 

和輸出端:

Startdate: 29-Aug-2015 endDate: 29-Feb-2016 

但我想下面的輸出:

Startdate: 01-Sep-2015 endDate: 29-Feb-2016 

更新:

我有用一個實例更新了這個問題我已經試過並輸出了。

juharr的評論是我的工作。

+2

爲什麼地球上會'DateTime.AddMonths()'_subtract_天,除非你給它一個負值?請告訴我們你的代碼和你得到的輸出。 –

+3

你所期望的範圍內的這兩個日期都不會像你說的那樣與當前日期有關。你能解釋你真正想要的嗎?你的意思是當月而不是日期? – itsme86

+2

6個月的規則不明確。你是指在本月底結束的6個月,還是你有6個月的特定期限(總是9月2月 - 9月)? – Rhumborl

回答

1

移動juharr的評論作爲一個答案,因爲它是正確

簡單的改變:

DateTime startDate = endDate.AddMonths(-6); 

DateTime startDate = new DateTime(date.Year, date.Month, 1).AddMonths(-5); 
-1

首先,180天不完全是六個月。看起來你需要-3個月和+3個月。這會給你六個月的突破。

幾個月:

var dat = new DateTime(2016, 01, 01); 
var startdat = dat.AddMonths(-3); 
var enddat = dat.AddMonths(3); 

但是,如果你真的意味着180天....

對於天:

var dat = new DateTime(2016, 01, 01); 
var startdat = dat.AddDays(-90); 
var enddat = dat.AddDays(90); 

現在,你有你需要的兩個日期。

更新1: 如果你只需要-6個月,你的功能確實有用,但正如我之前提到的,-180天與-6個月不是一回事。

如果您需要180天,您仍然可以使用AddDays(-180),或者您可以使用AddMonths(-6) 6個月。

+5

「看起來你需要-3個月和+3個月「 - 你怎麼看? Op給出了'2016年2月2日'的日期,並預計將恢復'2015年9月1日至2016年2月29日'。 – Rotem

+0

他的問題說,「我需要六個月的範圍」。這就是我的反應。我沒有看到其他部分。 – arcee123

0

總部設在你的問題中的示例中,這應該爲你工作:

DateTime end = new DateTime(DateTime.Now.AddMonths(1).Year, DateTime.Now.AddMonths(1).Month, 1).AddDays(-1); 
DateTime start = end.AddMonths(-6); 
+3

或'var end = new DateTime(DateTime.Now.Year,DateTime.Now.Month,1).AddMonth(1).AddDay(-1);'同樣,'start'將成爲最後一天而不是第一個,而是'var start = new DateTime(DateTime.Now.Year,DataTime.Now.Month,1).AddMonths(-5)'。 – juharr

相關問題