2014-04-15 26 views
11

Farklı başlangıçlarda ayın başlangıç ​​tarihi ve bitiş tarihi nasıl alınır? Bunu denedim ve ben başlangıç ​​tarihi almak ama bitiş tarihiTarih saatinin başlangıç ​​ve bitiş tarihi nasıl alınır?

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

ay bitiş tarihi mutlaka appretiated edilir 31 ve 28 veya 29. Yardımlarınızı olduğunda bu mantık başarısız bulamadık.

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

Bir aylık bir gün her zaman '1' başlar ancak '28',' 29', '30' veya' 31' ile bitebilir. Bildiğim kadarıyla, en mantıklı yol başlangıç ​​tarihinize '1' ayı ekleyecek ve '1' gününü onunla çıkartacaktır. –

+0

Yan Not: Lütfen kodunuzda bazı 'DateTime.Now's kullanmayın, bunun yerine saklamak için bir değişken belirtin -' var now = DateTime.Now; '- daha sonra bunun yerine bu değişkeni kullanın ([related question] (https : //stackoverflow.com/q/29530946/4519059)))) –

cevap

32

:

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

bir aydaki gün sayısını elde (ve IL koduna baktığımızda, bunu bir yapacaksın sürece rağmen bu şekilde, diğer cevaplardan çok verimli olduğu görülmektedir bir yöntemi var

int daysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); 
DateTime monthEndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, daysInMonth); 
+1

@Downvoter en azından yorumda mı? –

+2

@ SonerGönül Downvoter'ın birden fazla nedeni olabilir. Örneğin, orijinal kodun '.ToString()' nedeniyle derlenmeyeceğini söyleyebilirim, bu yüzden kodum da derlemeyecek. Ya da başka bir şey. –

14

Zaten başlangıç ​​tarihini vardı

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

İkincisindeki ilk işlevi kullanırdım. –

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

Son tarihi almak için ilk tarihi

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

almak için: Böyle endDate hesaplayabilir

-2

ilk tarih için:

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

son tarih için:

milyar zaman, herhangi bir fark) olacak şüphe
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month)); 
+0

@Downvoter .. en azından yorum yapmak ister misiniz? –

+0

Cevabınızın [bu cevabın 2 yıl önceki] cevabı farkı nedir? (Https://stackoverflow.com/a/23077662/4519059)? –

İlgili konular