2014-02-14 3 views
3

Я пытаюсь получить последний день текущего месяца и последнего дня следующего месяца.Как получить последний день текущего месяца и последний день следующего месяца

Вот код, который я до сих пор придумал, но мне нужно смешать между кодом NodaTime и методом .NET DateTime.DaysInMonth(), чтобы добиться того, что я ищу, что не звучит правильно.

class Program { 

    public static void Main(string[] args) 
    { 
     DateTimeZone mst = DateTimeZoneProviders.Tzdb["MST"]; 

     Instant now = SystemClock.Instance.Now; 
     ZonedDateTime mstNow = now.InZone(mst); 

     LocalDate mstLastDayOfCurrentMonth = new LocalDate(mstNow.Year, mstNow.Month, DateTime.DaysInMonth(mstNow.Year, mstNow.Month)); 
     Console.WriteLine("Last Day of Current Month: {0}", mstLastDayOfCurrentMonth); 

     //move into the next month 
     LocalDate nextMonth = mstLastDayOfCurrentMonth.PlusDays(1); 
     LocalDate mstLastDayOfNextMonth = new LocalDate(nextMonth.Year, nextMonth.Month, DateTime.DaysInMonth(nextMonth.Year, nextMonth.Month)); 
     Console.WriteLine("Last Day of Next Month: {0}", mstLastDayOfNextMonth); 

    } 

} 

Можете ли вы, пожалуйста, дайте мне знать, что это NodaTime рекомендуемый способ получить последний день текущего и последующих месяцев?

Заранее спасибо

ответ

6

Получить Calendar вашего ZonedDateTime, а затем вызвать метод GetDaysInMonth(year, month):

ZonedDateTime mstNow = now.InZone(mst); 
CalendarSystem calendar = mstNow.Calendar; 
LocalDate mstLastDayOfCurrentMonth = new LocalDate(
    mstNow.Year, mstNow.Month, calendar.GetDaysInMonth(mstNow.Year, mstNow.Month)); 
+0

Не знаю, как я пропустил это, но он прекрасно работает, спасибо. – FullOfQuestions

Смежные вопросы