2015-12-08 144 views

回答

0

最後,我想出了這個解決方案:

yearMonth.toLocalDate(yearMonth.plusMonths(1).toLocalDate(1).minusDays(1).getDayOfMonth()) 

我需要獲取下個月的第一天,然後使用minusDays(1)方法從中扣除1天。

+0

恭喜!你能否將自己的答案標記爲解決方案? :) –

0

短的僅僅擁有數量的array,你可以以編程弄清楚使用如下的內容:

  1. 你檢查,第一:

    if (month == 2 && year % 4 == 0) 
        return 29; 
    else if (month == 2) 
        return 28; 
    else { 
        if (month > 7) 
         month -= 1; 
        if (month % 2 == 0) //Month number is even 
         return 30; 
        else 
         return 31; 
    } 
    

    所以要通過這個走看看它是不是二月,這是一個閏年。

  2. 接下來,您只需檢查是否是二月。
  3. 之後,您需要查看月份是否爲8月或更晚,因爲那是31天的月份重新開始的時間。如果是這種情況,則基本上將月份數字從偶數改爲數字,反之亦然。
  4. 最後,運行月份編號(編輯與否,取決於是否是8月或以後),以查看它是偶數還是奇數,最終決定最後一天。

示例:2015年2月。month = 2year = 2015month確實等於2,但year % 4等於3。最終結果,return 28

實施例2:十月,2015年month = 10year = 2015month大於7,所以month = 9month很奇怪,所以最終結果爲return 31

+0

這是錯誤的,因爲它會給你的日期像1900-2-29 – Zee

+0

如果你解析出年和月是可用的,那就沒有問題了。 –

0

您可以使用dateTime.dayOfMonth().getMaximumValue()獲取當前月份和年份的最後一天。

public class Test { 

    public static void main(String[] args) { 

     YearMonth ym = new YearMonth(); 
     System.out.println(ym); 
     int dayCount = daysOfMonth(ym.getYear(), ym.getMonthOfYear()); 
     LocalDate localDate = new LocalDate(ym.getYear(), ym.getMonthOfYear(), dayCount); 
     System.out.println(localDate); 
    } 

    public static int daysOfMonth(int year, int month) { 
     DateTime dateTime = new DateTime(year, month, 14, 12, 0, 0, 000); 
     return dateTime.dayOfMonth().getMaximumValue(); 
    } 
} 

也簡單,你可以改變的主要方法部分(不改變daysOfMonth法)

public static void main(String[] args) { 

    YearMonth ym = new YearMonth(); 
    System.out.println(ym); 
    LocalDate endOfMonth = ym.toLocalDate(daysOfMonth(ym.getYear(), ym.getMonthOfYear())); 
    System.out.println(endOfMonth); 
} 
相關問題