在 Postgresql 中保存时区时出错

Error in saving timezone in Postgresql

尝试使用 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

基于 Raymond Nijland 的 ,这是有效的,方法如下(来自 PGAdmin 4) 原因是 OS 强制使用自己的时区并且不保存 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),如前所述 here