Для полного контроля я бы go создал бы собственный форматер для какой строки ISO-8601, которая получается из DateTime.to_iso8601!/1
.
@date_delim ?-
@time_delim ?:
@zone_suffix " UTC"
# 20200410T040640Z
def format_timestamp(<<
y1, y2, y3, y4, m1, m2, d1, d2, ?T,
h1, h2, i1, i2, s1, s2, ?Z
>>), do: <<
y1, y2, y3, y4, @date_delim, m1, m2, @date_delim, d1, d2, ?\s,
h1, h2, @time_delim, i1, i2, @time_delim, s1, s2, @zone_suffix >>
def format_timestamp(timestamp) when is_integer(timestamp) do
timestamp
|> DateTime.from_unix!()
|> DateTime.to_iso8601(:basic)
|> format_timestamp()
end
Для всего остального последний ответ, предоставленный Адамом Миллерчипом с использованием dt.zone_abbr
, будет наилучшим.