Java 8 here, I have the following code:
public class PossibleBug {
  public static void main(String[] args) {
    new PossibleBug().run();
  }
  public void run() {
    buildDate("20181205");
  }
  public Date buildDate(final String yyyyMmDd) throws ParseException {
    TimeZone expectedTz = TimeZone.getTimeZone("America/New_York");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    sdf.setTimeZone(expectedTz);
    TimeZone actualTz = sdf.getTimeZone();
    Date answer = sdf.parse(yyyyMmDd);
    return answer;
  }
}
So pretty basic stuff:
- create a 
SimpleDateFormatand set its timezone to EST - Use the SDF to parse a date string
 - Result should be a date in EST as well
 
However at runtime, look at the debugger results:
How is this possible?!?! sdf.parse(yyyyMmDd) is returning a date formatted in GMT. Is there something I'm missing on my end or is this a bug in SimpleDateFormat?
I am able to invoke buildDate and run it from inside a different class and it seems to work fine:

