首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“UTC-4”时区在Postgres中会导致+04,而'UTC+4‘会导致-04?

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

Stack Overflow用户
提问于 2021-11-28 09:25:06
回答 1查看 88关注 0票数 0

在我看来,“UTC-4”与“-04”相关似乎更直观,反之亦然。

我在这里附加了一个图片,说明在选择相应时区中的当前时间时所得到的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-28 17:07:36

根据来自@a_horse_with_no_name的注释中的链接,UTC-4/UTC+4是POSIX风格的时区指定,因此来自UTC的方向被颠倒。换句话说,+从格林威治向西走,而-则向东走。你们的选择是:

  1. 认识到这一点,并根据需要逆转你的信号。
  2. 使用已知的时区,比如America/Porto_Velho(-04)或Asia/Baku(+04)。虽然这个偏移量可能会改变,如果DST规则改变了那个时区。
  3. 做下面这样的事。我目前在美国的PST
代码语言:javascript
复制
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

更新

POSIX时区解释的参考位置已更改为POSIX时区,其内容如下:

偏移量字段指定与UTC不同的小时,以及可选的分钟和秒。它们的格式为hh[:mm:ss],可选地带有前导符号(+或-)。在格林威治以西的地区使用了积极的标志。(请注意,这与PostgreSQL其他地方使用的ISO-8601标志约定正好相反。)hh可以有一个或两个数字;mm和ss (如果使用)必须有两个数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70142068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档