2014-04-15 172 views
11

如何獲取不同變量的月份開始日期和結束日期。我曾嘗試這樣做,我得到的開始日期,但無法找到結束日期如何獲取日期時間月開始和結束日期?

DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd HH:mm:ss.fff"); 
DateTime endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddDays(30).ToString("yyyy-MM-dd HH:mm:ss.fff"); 

當一個月結束日期是31和28或29.您的幫助是肯定appretiated這個邏輯失敗。

+5

一個月的日子總是開始「1」,但它可以以「28」,「29」,「30」或「31」結尾。據我所知,最合乎邏輯的方法是在開始日期加1個月,並用它減去1日。 –

+0

注意:請不要在你的代碼中使用一些'DateTime.Now',而是聲明一個變量來存儲它 - var now = DateTime.Now; - 然後使用該變量代替([related question](https) ://stackoverflow.com/q/29530946/4519059));) –

回答

32

可以計算endDate這樣的:

DateTime endDate = startDate.AddMonths(1).AddDays(-1); 
+1

@Downvoter至少在意嗎? –

+2

@SonerGönülDownvoter可以有多種原因。例如,他可以說因爲'.ToString()'原始代碼不會編譯,所以我的代碼也不會編譯。或其他任何東西。 –

14

爲了讓第一次約會

public DateTime FirstDayOfMonth(DateTime dateTime) 
{ 
    return new DateTime(dateTime.Year, dateTime.Month, 1); 
} 

要獲得最後日期

public DateTime LastDayOfMonth(DateTime dateTime) 
{ 
    DateTime firstDayOfTheMonth = new DateTime(dateTime.Year, dateTime.Month, 1); 
    return firstDayOfTheMonth.AddMonths(1).AddDays(-1); 
} 
+7

我會使用第二個函數中的第一個函數。 –

1
DateTime endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) 
         .AddMonths(1).AddDays(-1); 
1

您已有的開始日期:

DateTime monthStartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); 

有獲得天的一個月的數量(以及綜觀IL代碼,似乎這種方式比其他的答案更有效,但除非你打算做一個的方法十億的時候,我懷疑會有任何區別):

int daysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); 
DateTime monthEndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, daysInMonth); 
-2

對於第一次約會:

DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1); 

對於最後日期:

DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month)); 
+0

@Downvoter ..至少照顧評論? –

+0

你的答案與[2年前的答案](https://stackoverflow.com/a/23077662/4519059)的區別是什麼? –

相關問題