为什么 Postgres 中的“UTC-4”时区导致 +04,而 'UTC+4' 导致 -04?

Why is 'UTC-4" timezone in Postgres leads to +04, and 'UTC+4' leads to -04?

对我来说,'UTC-4' 与“-04”相关联似乎更直观,反之亦然。

我在此处附上了我尝试 select 相应时区中的当前时间时得到的图像。

根据来自@a_horse_with_no_name 的评论中的 link,UTC-4/UTC+4 是 POSIX 风格的时区名称,因此 UTC 的方向是逆转。换句话说,+ 从格林威治向西,- 向东。您的选择是:

  1. 认识到这一点并根据需要反转你的标志。

  2. 使用已知时区,例如 America/Porto_Velho(-04) 或 Asia/Baku(+04)。如果该时区的 DST 规则发生变化,此偏移量可能会发生变化。

  3. 做如下的事情。我目前在美国 PST

select current_time;
    current_time    
--------------------
 09:05:28.464408-08

 select (split_part((current_time at time zone 'UTC' - interval '4 hours')::varchar, '+', 1) || '-04')::timetz;
       timetz       
--------------------
 13:05:39.056446-04

select (split_part((current_time at time zone 'UTC' + interval '4 hours')::varchar, '+', 1) || '+04')::timetz;
       timetz       
--------------------
 21:05:50.624686+04