title: Is there any reason to use ZoneId.of("UTC") instead of ZoneOffset.UTC?
body: <h2>Is there any reason to use <code>ZoneId.of(&quot;UTC&quot;)</code> instead of <code>ZoneOffset.UTC</code>?</h2>
  <p>We know the difference between the two as provided in <a href="https://stackoverflow.com/questions/39506891/why-is-zoneoffset-utc-zoneid-ofutc">What is the difference between ZoneOffset.UTC and ZoneId.of(&quot;UTC&quot;)?</a>.</p>
  <p>&lt;tl;dr&gt; version:</p>
  <ul>
  <li><code>ZoneOffset.UTC</code> returns a mere <code>ZoneOffset</code> with ID &quot;Z&quot;, offset of 0 and default zone rules.</li>
  <li><code>ZoneId.of(&quot;UTC&quot;)</code> returns a <code>ZoneRegion</code> with ID &quot;UTC&quot; and <code>ZoneOffset.UTC</code> included.</li>
  </ul>
  <p>&lt;/tl;dr&gt;</p>
  <p>For this question, I assume UTC-usage merely for easier date and time handling and not, because something might actually be located in the UTC region or some other business reason to have this as the actual ZoneRegion.</p>
  <p>For example, when dealing with <code>ZonedDateTime</code>. The only difference I could find was that it prints differently.</p>
  <pre><code>2021-06-10T15:28:25.000000111Z
  2021-06-10T15:28:25.000000111Z[UTC]
  </code></pre>
  <p>We are having code review discussions back and forth about this, so I guess this conflict is not uncommon.</p>
  <h2>Here are my thoughts so far</h2>
  <h3><code>ZoneOffset.UTC</code></h3>
  <ul>
  <li>It is a constant (and further, it's Offset value (0) is even cached).</li>
  <li>It has (a tiny bit) less overhead, due to the missing region information.</li>
  <li>At UTC, there are no daylight saving times or historical shifts to consider, like in any other timezone.<br />
  Thus, an Offset of 0 is in general enough for all use cases I encountered so far (like converting to and from a certain Zone Region with a particular daylight saving status).</li>
  </ul>
  <h3><code>ZoneId.of(&quot;UTC&quot;)</code></h3>
  <ul>
  <li>In general, I'd say ZoneRegions are preferred to ZoneOffsets, due to a range of additional location-specific data like a particular daylight saving time or time shifts in history.</li>
  <li>However, in case of UTC, <code>ZoneId.of(&quot;UTC&quot;)</code> is just a region wrap around <code>ZoneOffset.UTC</code> and I could not find any benefit so far. As far as I know, in UTC no region-relevant data exists apart from it's inherited <code>ZoneOffset.UTC</code> rules.</li>
  <li>Needs to be parsed every time.</li>
  </ul>
  <hr />
  <h2>So my <em>_guess_</em> is:</h2>
  <p>Unless you really need the UTC time zone/region for some (e.g. business) reasons, you should prefer <code>ZoneOffset.UTC</code>. It has a (minor) advantage in its performance footprint and the UTC ZoneRegion does not seem provide any benefit I can see or think of.</p>
  <p>However, because of the complexity of the Java Date Time API it is hard to tell if I am missing something in this discussion.<br />
  <strong>Is there any reason why someone should ever use <code>ZoneId.of(&quot;UTC&quot;)</code>?</strong></p>