предыдущий начальный квартал как 201303
предыдущий конечный квартал как 201404
т.е. сначала разница кварталов между двумя периодами времени будет быть рассчитаны. Тогда предыдущий последний квартал будет равен 1 кварталу, предшествующему входному начальному кварталу, и будет получена разница кварталов между двумя входными данными, а затем она будет вычтена из предыдущего последнего квартала, чтобы получить предыдущий начальный квартал.
Код: Выделить всё
public static Map getPreviousQuarter( String start,String end){
String prevStartQuarter= calulatePreviousQuarter(start);
String prevEndQuarter=calulatePreviousQuarter(end);
Map returnMap = new HashMap();
returnMap.put("previousStartQuarter", prevStartQuarter);
returnMap.put("previousEndQuarter",prevEndQuarter);
System.out.println("the reurnmap is" +returnMap);
return returnMap;
}
private static String calulatePreviousQuarter(String input)
{
int yearVal=0;
String year = input.substring(0,4);
String quarter = input.substring(4);
if(quarter.equalsIgnoreCase("01"))
{
yearVal = Integer.valueOf(year)-1;
quarter ="04";
}
else
{
yearVal = Integer.valueOf(year);
switch(quarter)
{
case "02":
quarter ="01";
break;
case "03":
quarter ="02";
break;
case "04":
quarter ="03";
break;
default:
break;
}
}
return String.valueOf(yearVal)+quarter;
}
Ввод
Начало строки 201501Конец строки 201602
Таким образом, разница в кварталах равна 6
Ожидаемый результат
Сопоставление с ключом и значениями как
previousStartQuarter 201404
previousEndQuarter 201303
Подробнее здесь: https://stackoverflow.com/questions/328 ... ce-in-java