Well what if you tried something like this with your code:
$date = putenv('TZ=Asia/Calcutta'); //set the time
$date = date("H:i:s", mktime(date("H"), date("i")-7, date("s"), date("j"), date("m"), date("y")));
//formats the time, but subtracts 7 from the mktime in minutes
//so the time stays correct
if this code still does not display the correct time just add or subtracts to the minutes/hours
I hope this helps!