I have a use case , where I have to provide input start quarter and end quarter as two input as string. For example I will provide 201501(start quarter) and 201602(end quarter) as two quarter input. The method will give the output in a map as previous start quarter and end quarter as following previous start quarter as 201303 previous end quarter as 201404 ie first the quarter difference between two time period will be calculated. Then the previous last quarter will be 1 quarter previous to input start quarter and the quarter difference between two input will be derived , then it will be subtracted from previous last quarter to get the previous start quarter.
public static Map<String,String> getPreviousQuarter( String start,String end){
String prevStartQuarter= calulatePreviousQuarter(start);
String prevEndQuarter=calulatePreviousQuarter(end);
Map<String,String> returnMap = new HashMap<String,String>();
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;
}
INPUTOUTPUT Input String start 201501 String end 201602 So the quarter difference is 6 Expected Output Map with key,values as previousStartQuarter 201404 previousEndQuarter 201303