With the test code below, proper time zone is not set in the calendar returned by parse.
import java.text.ParsePosition;
import java.util.Date;
import com.ibm.icu.text.SimpleDateFormat;
import com.ibm.icu.util.Calendar;
import com.ibm.icu.util.TimeZone;
import com.ibm.icu.util.ULocale;
public class TimeZoneRoundTrip {
public static void main(String[] args) {
Date d = new Date();
String tzid1 = "America/Los_Angeles";
System.out.println(tzid1);
SimpleDateFormat sdf = new SimpleDateFormat("z", ULocale.US);
sdf.setTimeZone(TimeZone.getTimeZone(tzid1));
String tzstr = sdf.format(d);
System.out.println(tzstr);
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"), ULocale.US);
sdf.parse(tzstr, cal, new ParsePosition(0));
String tzid2 = cal.getTimeZone().getID();
System.out.println(tzid2);
}
}
With this test code, output is -
America/Los_Angeles
PDT
Asia/Tokyo
This ticket is for pattern 'z' and 'zzzz'. Because we want to isolate this issue from other parsing issue discussed in #5893, I created this ticket.