为什么 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
的方向是逆转。换句话说,+
从格林威治向西,-
向东。您的选择是:
认识到这一点并根据需要反转你的标志。
使用已知时区,例如 America/Porto_Velho
(-04) 或 Asia/Baku
(+04)。如果该时区的 DST
规则发生变化,此偏移量可能会发生变化。
做如下的事情。我目前在美国 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
对我来说,'UTC-4' 与“-04”相关联似乎更直观,反之亦然。
我在此处附上了我尝试 select 相应时区中的当前时间时得到的图像。
根据来自@a_horse_with_no_name 的评论中的 link,UTC-4/UTC+4
是 POSIX 风格的时区名称,因此 UTC
的方向是逆转。换句话说,+
从格林威治向西,-
向东。您的选择是:
认识到这一点并根据需要反转你的标志。
使用已知时区,例如
America/Porto_Velho
(-04) 或Asia/Baku
(+04)。如果该时区的DST
规则发生变化,此偏移量可能会发生变化。做如下的事情。我目前在美国
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