4

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

如果是这样,那么问题在于 IST 用于表示印度以色列标准时间,但 postgres 使用IST表示以色列标准时间(可能会混淆世界六分之一的人口)并且印度标准时间没有时区字符串。

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

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

4

1 回答 1

7

对于印度:

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;

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

于 2012-03-22T03:16:45.813 回答