2016-09-20 4 views
-3

Als Beispiel Wenn ich den Monat August 2016 bekam, sollte ich das Startdatum als 01. Jul 2016 und das Enddatum als 30. September 2016 bekommen (da dies unter dem 3. Quartal dieses Jahres liegt). Kann jemand eine Logik dafür erklären?Wie Startdatum und Enddatum eines aktuellen Quartals ..?

+0

Was haben Sie bisher versucht? Ich empfehle auch, zu schauen, [wie man eine Frage stellt] (http://stackoverflow.com/help/how-to-ask), wenn Sie SO neu sind – Gikkman

+0

Es gibt keine solche Methode, die irgendein Datum gibt, gibt es Ihnen zurück Anfangs- und Enddatum des Quartals. Sie müssen es selbst programmieren. Denken Sie an Modulo-Operationen und Addieren/Subtrahieren von Tagen/Monaten von dem angegebenen Datum –

+0

Entschuldigung für nicht erklären, aber wie ich oben erwähnt, wenn ich gebe Aug als Eingabe ich sollte das erste Datum des Quartals bedeutet erstes Datum des Monats Juli und zuletzt Datum als letztes Datum des Monats Sept. – NGopal

Antwort

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

} 

Hope this jemand helfen wird, und es wird für jeden Test case.Thank Sie @fabin arbeiten.

0

Was genau verstehen Sie nicht? Das dritte Quartal eines Jahres umfasst die Monate Juli, August und September, so dass das Anfangsdatum des Quartals der 1. Tag im Juli und das Enddatum der letzte Tag im September ist. Wenn Sie beispielsweise Februar oder März haben, ist das Startdatum der 1. Januar 2016 und das Enddatum ist der 31. März 2016. Es ist so einfach.

+0

Entschuldigung, aber ich kann die Logik nicht finden und ich gebe die Eingabe als Monatswert wie 01 für Januar und 02 für Februar oder einen Monatsnamen wie Februar oder April. – NGopal

1

Sie könnten Month und LocalDate ‚s Methoden verwenden, um jene Daten zu erhalten:

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); 
} 
Verwandte Themen