I have a problem with Go Time.Format especially with RFC3339 and RFC3339Nano
if you check RFC3339 section 5.6 (https://tools.ietf.org/html/rfc3339#section-5.6) it’s clearly state by the ABNF definition that
Z and the
±hh:mm time offset are alternatives
time-numoffset = ("+" / "-") time-hour ":" time-minute time-offset = "Z" / time-numoffset <<< HERE
and also if you check https ://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC) and https ://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC both section explains that Z is an alternative form of
+00:00 time offset (a.k.a. UTC)
Go Time.Format documentation (https ://pkg.go.dev/time?pkg-constants) states:
Replacing the sign in the format with a Z triggers the ISO 8601 behavior of printing Z instead of an offset for the UTC zone. Thus: Z0700 Z or ±hhmm Z07:00 Z or ±hh:mm Z07 Z or ±hh
IMHO that is absolutely false. Both RFC3339 and ISO8601 states the opposite.
Why was this
Z0700 Frankenstein-like format implemented instead of the correct format from RFC3339 / ISO 8601?
PS: Sorry for the broken URLs above but the forum engine says new users not allowed to put more than 2 URLs in the post