Just to answer myself so that it might help some one else :
I was having date as string as input lets say :
String startDate = "2016-04-21T00:00:00+0530"
//i can calculate the timezone offset using
String offSet = startDate.substring(startDate.length() - 5) //gives +0530
Method used to calculate timezone. Here we give offset calculated above and the below method returns the TimeZone object:
public static TimeZone fetchTimeZone(String offset) {
if (offset.length() != 5) {
return null
}
TimeZone tz
Integer offsetHours = Integer.parseInt(offset.substring(0, 3))
Integer offsetMinutes = Integer.parseInt(offset.substring(3))
String[] ids = TimeZone.getAvailableIDs()
for (int i = 0; i < ids.length; i++) {
tz = TimeZone.getTimeZone(ids[i])
long hours = TimeUnit.MILLISECONDS.toHours(tz.getRawOffset())
long minutes = Math.abs(TimeUnit.MILLISECONDS.toMinutes(tz.getRawOffset()) % 60)
if (hours != offsetHours || minutes != offsetMinutes) {
tz = null
} else {
break
}
}
return tz
}
Finally i use the Timezone from above method to format any date to that timezone :
SimpleDateFormat timeZonedFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
TimeZone timeZone = fetchTimeZone(offSet) //from above method and offset from first code
timeZonedFormatter.setTimeZone(timeZone);
//this timeZonedFormatter can be used to format any date into the respective timeZone