2016-09-20 190 views
-3

举例如果我得到2016年8月份的月份,那么我应该将开始日期设置为2016年7月1日,并将结束日期设置为2016年9月30日(因为这是在今年第三季度之前)。 任何人都可以解释一个这样的逻辑。如何获取当前季度的开始日期和结束日期..?

+0

你到目前为止尝试过什么?如果您是SO – Gikkman

+0

的新手,我还建议您查看[如何提出问题](http://stackoverflow.com/help/how-to-ask)。在给定日期的情况下,没有这样的方法,它会让您回来本季度的开始和结束日期。你需要自己编写代码。考虑模数运算和从给定日期加/减日/月 –

+0

对不起,没有正确解释,但正如我上面提到的,如果输入我给8月作为输入,我应该得到本季度的第一个日期是指月的第一个日期七月和最后日期作为月份的最后一个日期9月 – NGopal

回答

0
public static void printStartEndQuarter(int year, int month) { 
    double thisMonth = (double)month; 
    String quarter = thisMonth/3 <= 1 ? "Quarter 1" : thisMonth/3 <= 2 ? "Quarter 2" : thisMonth/3 <= 3 ? "Quarter 3" : "Quarter 4"; 
    if (month % 3 == 2) { 
     month = month - 1; 
    } 

    else if (month % 3 == 0) { 
     month = month - 2; 
    } 
    LocalDate start = LocalDate.of(year, month, 1); 
    Month endMonth = start.getMonth().plus(2); 

    LocalDate end = LocalDate.of(year, endMonth, endMonth.length(start.isLeapYear())); 

    System.out.println("Start Date====" + start); 
    System.out.println("End Date====" + end); 
    System.out.println("quarter====" + quarter); 

} 

希望这将帮助一些之一,它适用于任何测试case.Thank你@fabin工作。

0

究竟是什么,你不明白?一年的第三季度包括七月,八月和九月,因此本季度的开始日期是七月的第一天,结束日期是九月的最后一天。例如,如果您有二月或三月,则开始日期将为2016年1月1日,结束日期为2016年3月31日。这很简单。

+0

对不起,先生,但我找不到逻辑,我会给输入作为一个月的价值,如1月的01和2月的2或2月或4月的名称。 – NGopal

1

你可以使用MonthLocalDate的方法来获取这些日期:

public static void printStartEndQuarter(int year, Month month) { 
    LocalDate start = LocalDate.of(year, month.firstMonthOfQuarter(), 1); 

    Month endMonth = start.getMonth().plus(2); 

    LocalDate end = LocalDate.of(year, endMonth, endMonth.length(start.isLeapYear())); 

    System.out.println(start); 
    System.out.println(end); 
}