是否可以在 PHPStorm 中为数据库数据源指定时区?

Is it possible to specify time zone for DB data source in PHPStorm?

我在我的 PostgreSQL 中设置了 UTC 时区,并且 SELECT NOW()psql 控制台中显示了正确的日期。

我使用 PHPStorm 进行开发,并使用它的数据库控制台访问我的数据库,但它使用不同的时区(Europe/Moscow,这是我的 Mac 的时区)和 SELECT NOW() 显示了这个时区的时间(顺便说一句,日期是错误的,因为 Europe/Moscow 时区最近将其偏移量从 +4 更改为 +3)。

我没有找到任何关于如何告诉 PHPStorm 使用 postgresql.conf 中配置的时区而不是系统时区的信息。可能吗?

好吧,我找到了一个解决方案,但它会影响 IDE 中的每个时间特定行为,例如控制台日志将以 UTC 显示日期时间。

想法是将时区传递给 VM 选项。为此,我们需要修改文件并重新启动 IDE.

对于Mac OS X 对于最新版本的PHPStorm:

cp /Applications/PhpStorm.app/Contents/bin/phpstorm.vmoptions ~/Library/Preferences/PhpStorm2016.1/

然后将 -Duser.timezone=UTC 添加到文件中,使其看起来像这样:

-Xms128m
-Xmx750m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=240m
-XX:+UseCompressedOops
-Duser.timezone=UTC

在使用 -Duser.timezone=UTC 行修改 phpstorm.vmoptions 文件后,我只从 NOW() 函数中看到了正确的 return,但从对 table 的查询中看到了错误喜欢 SELECT timestamp FROM ...

仅在没有任何 phpstorm.vmoptions 更改的情况下将具有 false 值的变量 timezoneAsRegion 添加到连接的高级选项卡帮助我 return 正确的时区 table.

文档 link:https://www.jetbrains.com/help/phpstorm/2016.1/data-sources-and-drivers-dialog.html#advancedTab

通过查询验证您的时区

SELECT * FROM pg_timezone_names

现在添加phpstorm.vmoptions配置关闭时区

-Duser.timezone=posix/America/Sao_Paulo

应用更改、断开连接、同步并验证select now()