You have this: 'print localtime(time() - 14400+$i) . "\n"' which is a single-quoted string. It is stopping the shell from replacing $i with the value. You must move $i outside of the single quotes. So turn your single-quoted string into one single-quoted string, then $i, then another single-quoted string.
`
perl -e 'print localtime(time() - 14400+'$i') . "\n"'`