Confusion with Java Time parsing UTC
<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>