2

尝试使用 Python 在 PostgreSQL 中保存日期,它为我的时区提供了 UTC+2,而它是 UTC+1(不要介意差异,我只是使用 Python 测试来了解时区的情况)

In [8]: datetime.datetime.now(pytz.timezone("Africa/Algiers"))
Out[8]: datetime.datetime(2018, 7, 7, 15, 27, 43, 756977, tzinfo=<DstTzInfo 'Africa/Algiers' CET+1:00:00 STD>)

在 PostgreSQL 上,我得到

2018-07-07 14:28:04.144505+02

时区不同

这就像 postgresql 添加了夏令时,而我们在阿尔及利亚没有它?

注意:我使用asyncpg

4

1 回答 1

1

根据 Raymond Nijland 的回答,这是有效的,这就是(来自 PGAdmin 4)的原因是操作系统强制使用自己的时区,而不是保存 Python 给他的时区。

只需从 SQL 提示符运行这三个命令:

要获取 PG 使用的时区,

SHOW timezone ;

获取所有可用的时区以及 PG 如何命名它们

SELECT * FROM pg_timezone_names ;

放置正确的时区

ALTER DATABASE yourDataBase SET timezone TO 'Africa/Algiers';

重启服务

sudo systemctl restart postgresql-10.service 

注意:即使您使用moment.js,也需要.zone(+0100)按照此处提及的方式添加

于 2018-07-08T15:05:59.637 回答