2011-10-27 118 views
0

我想通過使用當前日期得到兩個特定日期,讓我更詳細地解釋。使用當前日期作爲參考獲取特定日期

例如,如果今天是10/27/2011,那麼我想要有7/01/2011和9/30/2011。請注意,它的三個月期間(本月除外)我該怎麼做?

目前我正在遵循自我設計的方法,但我認爲它遠非好。這是代碼。

TimeSpan TSFrom = new TimeSpan(90 + DateTime.Now.Day, 0, 0, 0, 0); 
    TimeSpan TSTo = new TimeSpan(DateTime.Now.Day, 0, 0, 0, 0); 
    Response.Write(DateTime.Now.Subtract(TSFrom).ToShortDateString()); 
    Response.Write(DateTime.Now.Subtract(TSTo).ToShortDateString()); 

此代碼返回這些值

2011年7月2日 - 2011/9/30

而它的一些什麼可接受其仍像不是一個完美的方式去看看第一日期是從每月的第二天開始,而它應該從第一天開始,我認爲它是因爲有些月份會在29日結束,而在30日會結束。那麼,我怎樣才能獲得像7/1/2011這樣完美的日期到9/30/2011。

謝謝。

回答

3
var now = DateTime.Now; 
var end = new DateTime(now.Year, now.Month, 1).AddDays(-1); // Last day of previous month 
var start = new DateTime(now.Year, now.Month, 1).AddMonths(-3); // First day of third-last month 

(你可以存儲在一個局部變量new DateTime(now.Year, now.Month, 1),這是perso的問題我猜...)

1
DateTime now = DateTime.Today; 
DateTime firstOfMonth = now.AddDays(-now.Day + 1); 
DateTime beginning = firstOfMonth.AddMonths(-3); 
DateTime end = firstOfMonth.AddDays(-1); 

我們通過減去(當前日期 - 1)「回滾」到月初, 的期末是firstOfMonth.AddDays(-1);,週期的開始是firstOfMonth.AddMonths(-3);

+0

-1:這顯然是不正確的:如果你插入問題中給出的值(即,現在的日期是2011/10/27),你會得到2011/10/1-2011/12/31而不是2011/7/1-2011/9/30 ......另外我想,艾哈邁德並不想獲得固定的「季度」期限,但只有前三個月。 – MartinStettner

+0

@MartinStettner我誤解了他的請求。 – xanatos

+0

@MartinStettner重做:-) – xanatos

1
var fromWithDay = DateTime.Today.AddMonths(-3); 
var from = new DateTime(fromWithDay.Year, fromWithDay.Month, 1); 
var toWithDay = DateTime.Today; 
var to = new DateTime(toWithDay.Year, toWithDay.Month, 1).AddDays(-1); 

這可能是更短,但不易閱讀

+0

好,除了'var toWithDay = DateTime.Now;' – Otiel

+0

@Otiel,我認爲OP只對日期有興趣,而不是時間,還是我錯過了什麼? –

+0

不,你說得對,但我的評論不是日期或時間。在你的代碼片段中,「to」等於「31/01/2012」,而OP會喜歡「30/09/2011」。使用'var toWithDay = DateTime.Now;'或'var toWithDay = DateTime.Today;'而不是'var toWithDay = DateTime.Today.AddMonths(4);'然後它會尊重OP的請求。 – Otiel

0
DateTime now = DateTime.Now; 
DateTime firstDayOfThisMonth = new DateTime(now.Year, now.Month, 1); 
DateTime startDate = firstDayOfThisMonth.AddMonths(-3); 
DateTime endDate = firstDayOfThisMonth.AddDays(-1); 
Console.WriteLine(startDate); 
Console.WriteLine(endDate); 
相關問題