Найти - Пользователи
Полная версия: Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.
Начало » Python для новичков » Как получить время из PostgreSQL в том же самом часовом поясе, в котором и было изначально загружено в БД, вместо UTC? Используется "aware" тип времени.
1
TitanFighter
Добрый день.

Помогите пожалуйста по проблеме следующего характера:
- Есть данные, которые через Джангу загружаются в базу в формате “2015-10-31 17:00:00+03” (aware форма времени).
- PostgreSQL имеет свойство сохранять время в UTC.
- В pgAdmin-е я вижу время не в UTC, а в том виде, в котором было изначально загружено значение, т.е. “2015-10-31 17:00:00+03”.

К примеру я загружаю новые данные, но перед заливкой в БД нужно сравнить эти данные со значениями, которые уже есть в БД. Новая порция идет в формате "2015-10-31 17:00:00+03“, а значения из БД вытягиваются уже в UTC, т.е. ”2015-10-31 14:00:00+00".
Как сделать так, чтоб значение вытягивалось из БД не в UTC, а в том же часовом поясе, в котором и было залито?

Как я понимаю, если pgAdmin мне показывает время в залитом часовом поясе, а не в UTC, то и вытянуть как то из БД можно в том же самом часовом поясе?

test = Shows.objects.get(name='Test')
test.date_time # выдает в UTC, а нужно чтоб было +3

П.С Хардкодить нельзя. Нужно получать именно тот часовой пояс из БД, что и был залит изначально со значением, так как заливаться значения могут с разным часовым поясом.

Спасибо.
ZerG
посмотрите в сторону
http://www.saltycrane.com/blog/2009/05/converting-time-zones-datetime-objects-python/
TitanFighter
ZerG
Я pytz-ом пользуюсь, добавляя часовой пояс значениям, которые заливаются в БД. В ссылке, что вы указали (и я на просторах инета сам находил), как конвертировать значение из UTC в нужный часовой пояс. Мне такое не подходит, так как в БД заливаются даты\время с разными часовыми поясами. Мне нужно именно вытянуть часовой пояс из сохраненного в БД значения, который перед заливкой имел “aware”-тип, т.е. тип datetime с указанным часовым поясом.

Как сейчас происходит:
Мое_время_+3 -> БД Время_UTC+указывается Часовой Пояс
Мне нужно получить все то же самое в обратном порядке, вместо того, как сейчас происходит:
Мое_время_UTC (Без +3) <- БД Время_UTC+указывается Часовой Пояс
TitanFighter
Как выяснилось, нету таки возможности вытягивать из БД часовой пояс, который используется внутри данных “дата\время” при записи в БД. Часовой пояс, что используется в “дате\времени” дает только возможность Базе Данных правильно перевести записываемое значение в UTC.

Чтобы из БД получить время не в локальном часовом поясе (там где юзер находится), а в часовом поясе, к которому изначально относятся данные (концерт в другой стране\городе, и нужно знать время начала концерта не по локальному времени юзера, а именно по времени места проведения концерта), нужно в БД добавлять колонку и записывать в нее название часового пояса (аля ‘Europe/Paris’), к которому относится событие и как указано в ссылке выше от ZerG-а, проводить конвертирование.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB