在Django/PostgreSQL(印度标准时间)中设置自定义时区



在Django设置时区的文档中,时区的可用选项列表实际上是postgres时区参数字符串。Django似乎使用Postgres来检索时间。

如果是这样的话,那么问题是IST被用来表示Indian&以色列标准时间,但postgres使用IST表示以色列标准时间(可能会让世界上六分之一的人口感到困惑),而且印度标准时间没有时区字符串。

不仅如此,Postgres还错过了尼泊尔(GMT+5:30)和一些太平洋岛屿等其他国家的时区。

那么,有没有什么方法可以在Postgres或Django中设置自定义时区字符串(比如印度的GMT+5:30,尼泊尔的GMT+5:45等)?

对于印度:

SELECT now() AT TIME ZONE 'Asia/Calcutta';
SELECT now()::timestamp AT TIME ZONE 'Asia/Kolkata';
SELECT now()::timestamp AT TIME ZONE '5:30';

尼泊尔:

SELECT now()::timestamp AT TIME ZONE 'Asia/Katmandu';
SELECT now()::timestamp AT TIME ZONE 'NPT';

设置整个会话的时区:

SET time zone 'Asia/Calcutta';

要重置它(到postgresql.conf中设置的时区:

RESET time zone;

在系统视图pg_timezone_namespg_timezone_abbrevs 中查找更多信息

SELECT *
FROM   pg_timezone_names
WHERE  utc_offset BETWEEN '05:00:00' AND '06:00:00'
ORDER  BY utc_offset;
SELECT *
FROM   pg_timezone_abbrevs
WHERE  utc_offset BETWEEN '05:00:00' AND '06:00:00'
ORDER  BY utc_offset;

PostgreSQL关于AT TIME ZONE构造的手册。关于时区。

相关内容

  • 没有找到相关文章

最新更新