Welcome to the Ranch, Venkateswara.
I'm sorry to say that your code is flawed, because it's based on an incorrect idea of what a java.util.Date object really represents.
A java.util.Date object does not have timezone information by itself. It represents an "absolute" moment in time. (Internally, it contains a number of milliseconds since a fixed point in time - 01-01-1970, 00:00:00 UTC).
What your code does is shift the time that your input Date object has by a number of hours (the difference between the two timezones you pass in). But that's not how
you should use Date objects.
What you should do if you want to print the date in a different timezone, is use a DateFormat object and set the timezone on the DateFormat object to indicate in what timezone you want the date displayed. For example: