title: Confusion with Java Time parsing UTC
body: <p>I am confused with time handling in java time. I so long worked under the assumption that if a timestamp is specified as a zulu time, java would take care of the offset with regards to local time. </p>
  
  <p>To illustrate. I am currently in BST which has an offset of UTC +1. With that in mind, I would expect this zulu time: </p>
  
  <pre><code>2016-09-12T13:15:17.309Z
  </code></pre>
  
  <p>to be </p>
  
  <pre><code>2016-09-12T14:15:17.309 
  </code></pre>
  
  <p>LocalDateTime after parsing it. This is because my default systemtime is set to BST and the above timestamp (zulu time) specifies that it is a UTC time. </p>
  
  <p>Instead however consider this sample: </p>
  
  <pre><code>        String ts = "2016-09-12T13:15:17.309Z";
          LocalDateTime parse = LocalDateTime.parse(ts, DateTimeFormatter.ISO_DATE_TIME);
          System.out.println(parse);
  </code></pre>
  
  <p>This will print: </p>
  
  <pre><code>2016-09-12T13:15:17.309
  </code></pre>
  
  <p>So the timestamp, parsed as a LocalDateTime, is not recognised as UTC time and instead treated as localtime directly. 
  So I thought, maybe I need to parse it as a ZonedDateTime and convert it to LocalDateTime specifically in order to get the correct local time. With this test:</p>
  
  <pre><code>        String ts = "2016-09-12T13:15:17.309Z";
          ZonedDateTime parse = ZonedDateTime.parse(ts, DateTimeFormatter.ISO_DATE_TIME);
          System.out.println(parse);
          System.out.println(parse.toLocalDateTime());
  </code></pre>
  
  <p>I get the outputs:</p>
  
  <pre><code>2016-09-12T13:15:17.309Z
  2016-09-12T13:15:17.309
  </code></pre>
  
  <p>Same output for both dates. </p>
  
  <p>The only way to correctly parse this that I could find, is: </p>
  
  <pre><code>    String ts = "2016-09-12T13:15:17.309Z";
      Instant instant = Instant.parse(ts); // parses UTC
      LocalDateTime ofInstant = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
      System.out.println(instant);
      System.out.println(ofInstant);
  </code></pre>
  
  <p>This prints:</p>
  
  <pre><code>2016-09-12T13:15:17.309Z
  2016-09-12T14:15:17.309
  </code></pre>
  
  <p>Which is correct.</p>
  
  <p>So the question(s) are: </p>
  
  <ul>
  <li>Shouldn't java time recognise a UTC timestamp and parse it to the correct system default? </li>
  <li>How can I use the <code>LocalDateTime#parse</code> approach to get the correct result? </li>
  <li>Should I use <code>Instant</code> for everything now and discard the parsing? </li>
  </ul>
  
  <p>The issue is that <code>jersey/jackson</code>'s java time modules parse the timestamps using the ISO format and the regular <code>LocalDateTime#parse</code> methods. I realised that my times are no off since they are being treated as <code>LocalTime</code> while in fact they are in Zulu time. </p>