Дата / время выпуска с питоном (18 часов) - PullRequest
0 голосов
/ 09 августа 2010

Я работаю над созданием небольшой системы банов, и фрагмент ниже расскажет клиенту, сколько времени осталось до их бана.

Проблема: когда вы вызываете Bans.timeleft_str (), скореезатем, показывая что-то меньше дня, он покажет отметку времени + 18 часов.

Фрагмент: http://pastebin.com/Zumn0tLv

Эта проблема возникает, если я изменяю self.length = WEEK и т. д. Вместо этого7d 00h 00m, это будет 7d 18h ​​00m.

Первоначально я проверил это на своем Ubuntu Vbox, а затем попробовал на моей оболочке Windows Python, и все еще получил тот же результат.

Вывозможно, потребуется изменить self.timestamp на время в прошлом.

Заранее спасибо.

1 Ответ

1 голос
/ 09 августа 2010

time.time , как я только что сказал, документы работают в UTC (когда-то известное как «гринвичское» время, теперь «универсальная временная координата»). mktime , опять же, как сказано в своих документах, принимает в качестве аргумента

9-tuple [...] which expresses the time in local time, not UTC.

strptime может работать в любом случае (но вы не предоставляете часовой пояс, поэтому он будет использовать местное время).

Итак, в целом, вы глубоко погружаетесь в путаницу с часовыми поясами; -).

Я рекомендую (как всегда) стандартизировать по UTC (в конце концов, местный часовой пояс вашего сервера может не совпадать с часовым поясом его пользователей), например с директивой %Z в формате, который вы передаете strptime, и соответствующим часовым поясом 'UTC' (который гарантированно распознается на всех платформах) в соответствующей части анализируемой строки.

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