Normalde aşağıdaki kodu kullanıyorum ama daha iyi bir yolu var mı?Ayın son günü. NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
Normalde aşağıdaki kodu kullanıyorum ama daha iyi bir yolu var mı?Ayın son günü. NET
lastOfMonth = new DateTime(Now.Year, Now.Month, 1).AddMonths(1).AddDays(-1)
Ben yapar gibi
DateTime now = DateTime.Today;
var lastDate = new DateTime(now.Year, now.Month, DateTime.DaysInMonth(now.Year, now.Month));
DateTime(year, month, DateTime.DaysInMonth(year, month)).
Sen CultureInfo.CurrentCulture.Calendar.GetDaysInMonth (Now.Year, Now.Month)
Herhalde DaysInMonth
kullanacağı kullanabilirsiniz kullanmak kod biraz daha okunaklı ve anlaşılması kolay (her ne kadar ben gerçekten hile :-) gibi). Bu yazım benzer bir kestirmeniz (oldukça çok olan) requieres yüzden muhtemelen bir uzantısı yöntemi tanımlarsınız:
DateTime LastDayOfMonth(this DateTime) {
var days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
return new DateTime(DateTime.Now.Year, DateTime.Now.Month, days);
}
Şimdi çok daha iyi :-) görünüyor DateTime.Now.LastDayOfMonth()
kullanabilirsiniz.
int days = CalendarSystem.Iso.GetDaysInMonth(year, month);
Oldukça basit, eh: Burada
Eğer Noda Time kullanarak aydaki gün sayısını elde edebilirsiniz nasıl? Peki, sorduğun yılı ve ayı bildiğini varsayar. Eğer akım ay için bunu istiyorum ve sistemin saat diliminde, o zaman bu gibi açıkça belirtmek gerekirse:
DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
LocalDate localDate = SystemClock.Instance.Now.InZone(tz).Date;
int days = localDate.Calendar.GetDaysInMonth(localDate.Year, localDate.Month);
Noda Zaman kasten sen yerine, bu şeyler hakkında düşündürüyor
Sadece DateTime.Now
veya DateTime.Today
'un yaptığı varsayımları yapmak.
"Daha iyi" yi tanımlayın. –
Sadece API tarafından sağlanan bir işlevin daha iyi bir iş yapacağını düşünüyorum. –
Belirli bir saat mi istiyorsunuz? Eğer değilse, Bugün, şimdi kullanmalısınız. –