Установите пользовательский часовой пояс в Django / PostgreSQL (индийское стандартное время) - PullRequest
3 голосов
/ 22 марта 2012

В документации Django для установки часового пояса список доступных вариантов выбора для часового пояса фактически является строкой параметров часового пояса postgres. Похоже, Django использует Postgres для получения времени.

Если это так, то проблема в том, что IST используется для обозначения Индийского & Израиля Стандартного времени, но postgres использует IST для Израильского стандартного времени ( потенциально сбивает с толку более 6-й части населения мира), и нет никакой строки часового пояса для индийского стандартного времени.

Мало того, Postgres также пропускает часовой пояс для некоторых других стран, таких как Непал (GMT + 5: 30) и некоторых островов Тихого океана.

Итак, есть ли способ, которым я могу установить пользовательскую строку часового пояса (например, GMT + 5: 30 для Индии, GMT + 5: 45 для Непала и т. Д.) В Postgres или Django?

1 Ответ

5 голосов
/ 22 марта 2012

Для Индии:

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_names и pg_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. О часовых поясах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...