SimpleDateFormat sdfInput = new SimpleDateFormat("dd/MM/yyyy G");
SimpleDateFormat sdfOutput = new SimpleDateFormat("yyyy-MM-dd G");
***Condition1: valid Date
Date date = sdfInput.parse("31/1/2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2016-01-31 AD
***Condition2: Invalid Day (32)
Date date = sdfInput.parse("32/1/2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2016-02-01 AD
***Condition3: Negative Day (-1)
Date date = sdfInput.parse("-1/1/2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2015-12-30 AD
*** Condition4: ==> Invalid Month (13)
Date date = sdfInput.parse("1/13/2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2017-01-01 AD
*** Condition5: Negative Month (-1)
Date date = sdfInput.parse("01/-1/2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2015-11-01 AD
*** Condition6 : Invalid Year i.e Negative Year (-2016)
Date date = sdfInput.parse("01/01/-2016 AD");
String output = sdfOutput.format(date);
System.out.println(output) ==> 2017-01-01 BC