2014-04-15 12 views
11

Jak uzyskać datę początkową i końcową miesiąca w innej zmiennej. Próbowałem to i ja się datę rozpoczęcia, ale nie może znaleźć datę zakończeniaJak uzyskać datę rozpoczęcia i zakończenia daty w Datach?

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"); 

Ta logika zawodzi, gdy data zakończenia to 31 miesięcy i 28 lub 29. Twoja pomoc są pewnie appretiated.

+5

Dzień miesiąca zawsze rozpoczyna się od '1', ale może kończyć się' 28', '29',' 30' lub '31'. O ile mi wiadomo, najbardziej logicznym sposobem będzie dodanie "1" miesiąca do daty początkowej i odjęcie od niego '1' dnia. –

+0

Uwaga boczna: Proszę nie używać niektórych 'DateTime.Now's w kodzie, zamiast deklarować zmienną do przechowywania -' var now = DateTime.Now; '- następnie użyć tej zmiennej zamiast ([powiązane pytanie] (https) : //stackoverflow.com/q/29530946/4519059));) –

Odpowiedz

32

Można obliczyć endDate takiego:

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

@Dawkowa opieka nad komentarzem? –

+2

@ SonerGönül Downvoter może mieć wiele powodów. Na przykład może powiedzieć, że oryginalny kod nie skompilowałby się z powodu '.ToString()', więc mój kod również się nie skompilował. Albo coś innego. –

14

Aby uzyskać First Data

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

Aby uzyskać ostatniej daty

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

Użyłbym pierwszej funkcji w drugiej. –

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

Jesteś już datę rozpoczęcia:

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

Jest to metoda, aby uzyskać liczbę dni w miesiącu (a Patrząc na kod IL, wydaje się, że ten sposób jest bardziej wydajny niż inne odpowiedzi, choć chyba że masz zamiar zrobić z miliard czas, wątpię, nie będzie żadnej różnicy):

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

Przy pierwszym dniu:

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

ostatnich dniu:

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

@Dawnik. Chcesz się przynajmniej wypowiedzieć? –

+0

Jaka jest różnica twojej odpowiedzi na [tę odpowiedź sprzed 2 lat] (https://stackoverflow.com/a/23077662/4519059)? –

Powiązane problemy