У меня есть две отдельные машины (локальная разработка и сервер), которые получают доступ к одному и тому же дате времени из базы данных. Объекты DateTime имеют одинаковое значение (включая часовой пояс) на обеих машинах:Как заставить python datetime.strftime выводить в UTC?
Местное
print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)
Сервер
print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)
Однако выход strftime
отличается на обеих машинах :
Местный
print ts.strftime('%s')
> 1484320689
Сервер
print ts.strftime('%s')
> 1484291889
Что здесь происходит? Как я могу заставить клиент и сервер выводить одну и ту же строку времени в UTC?
Можете ли вы включить точный способ создания 'dt', чтобы мы могли реплицироваться правильно? Потому что я бы обычно использовал 'import datetime как dt', что означает, что' print dt' дает ''. Понятно, что это не реплицирует проблему (и отсутствует чтение базы данных), но мне не ясно, как сделать точный тест. –
roganjosh
@roganjosh dt - это просто имя переменной, которую я получаю из базы данных. Я переименовал его как «ts», чтобы избежать путаницы с импортом, например 'import datetime.datetime как dt'. – Paul
Вы можете сделать аналогичный тестовый пример следующим образом: 'print datetime.utcnow(). Replace (tzinfo = pytz.utc) .strftime ('% s')' Запуск на двух отдельных машинах приведет к выдаче другого значение (более нескольких секунд), даже если 'datetime.utcnow()' одинаково на обеих машинах – Paul