title: Getting a SimpleDateFormat Date Object in Another Time Zone
body: <p>I've got an Access database with a column of dates and times and a timezone like so:</p>
  
  <p><img src="https://i.stack.imgur.com/JNVjA.png" alt="Data Example"></p>
  
  <p>So, first I'm creating a TimeZone object and a SimpleDateFormat object like so</p>
  
  <pre><code>TimeZone timeZone = TimeZone.getTimeZone(parseNull(rs.getString("TimeZone")));      
  DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  dateFormatter.setTimeZone(timeZone);
  </code></pre>
  
  <p>Then, I'm reading in the date like so:</p>
  
  <pre><code>String startDateString = rs.getDate("Start_Date") + " " + rs.getString("Start_Time").substring(11);
  startDate = dateFormatter.parse(startDateString);
  </code></pre>
  
  <p>However, if I then print out the Date like so:</p>
  
  <pre><code>System.out.println("Start Actual: " + rs.getDate("Start_Date") + " " + rs.getString("Start_Time").substring(11));
  System.out.println("Start Formatted: " + startDate);
  </code></pre>
  
  <p>I get the following output:</p>
  
  <pre><code>Start Actual: 2011-11-10 18:00:00
  Start Formatted: Thu Nov 10 02:00:00 EST 2011
  </code></pre>
  
  <p>Okay....why? I find this very confusing. Why won't my Date object correctly display in the Australia/Sydney time zone and, better yet, how can I get this to correctly work so that I can set the date in my application correctly?</p>
  
  <p>Thanks in advance for any help!</p>