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

在设置时区的Django文档中,时区可用选项列表实际上是postgres时区参数字符串。 所以看起来Django使用Postgres来获取时间。

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

不仅如此,Postgres还在其他一些国家如尼泊尔(格林威治标准时间+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;

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

链接地址: http://www.djcxy.com/p/18587.html

上一篇: Set custom timezone in Django/PostgreSQL (Indian Standard Time)

下一篇: Where can I find a list of timezones in tabular format?