अगर मैं सही ढंग से समझता हूं, तो आपको उसी डेटा/कैलेंडर ऑब्जेक्ट पर टाइमज़ोन सेट करना होगा जिसे आप प्रिंट कर रहे हैं। इस तरह:
private Locale locale = Locale.US;
private static final String[] tzStrings = {
"America/New_York",
"America/Chicago",
"America/Denver",
"America/Los_Angeles",
};
Date now = new Date();
for ( TimeZone z : zones) {
DateFormat df = new SimpleDateFormat("K:mm a,z", locale);
df.setTimeZone(z);
String result = df.format(now);
System.out.println(result);
}
अगर मैं टाइमज़ोन को SimpleDateFormat पर सेट करता हूं तो यह ठीक काम कर रहा है।
यहाँ नमूना कोड है...
String date="05/19/2008 04:30 AM (EST)";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm aaa (z)");
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
long millis = sdf.parse(date).getTime();
sdf.setTimeZone(TimeZone.getDefault());
System.out.println(sdf.format(new Date(millis)));