Subject: [Sedate] "-00:00" offset vs "Z"

From: Justin Grant <[email-masked]>
Date: Mon, 21 Mar 2022 01:48:30 -0700

RFC 3339 says that the offset -00:00 should be used when the local offset
is unknown.

4.3 <https://datatracker.ietf.org/doc/html/rfc3339#section-4.3>.
Unknown Local Offset Convention

   If the time in UTC is known, but the offset to local time is unknown,
   this can be represented with an offset of "-00:00".  This differs
   semantically from an offset of "Z" or "+00:00", which imply that UTC
   is the preferred reference point for the specified time.  RFC2822
<https://datatracker.ietf.org/doc/html/rfc2822>
   [IMAIL-UPDATE
<https://datatracker.ietf.org/doc/html/rfc3339#ref-IMAIL-UPDATE>]
describes a similar convention for email.

However, my understanding is that many (most?  almost all?) applications
and libraries ignore the standard's advice and instead use Z, not -00:00,
when the local offset is unknown. For example, java.time.Instant
<https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html> uses Z
even though it does not know the local offset because its data model is
only a single time-since-epoch value. Example:

import java.time.Instant;
class Main {
  public static void main(String[] args) {
    Instant instant = java.time.Instant.parse("2017-06-16T21:25:37.258Z");
    System.out.println(instant.toString());
    // => 2017-06-16T21:25:37.258Z
  }
}

Is my assumption correct that most applications use Z when -00:00 would be
more correct according to the standard?  If so, do you know why -00:00
never became popular?

Cheers,
Justin