2010-09-11 2 views
1

Мне нужно проанализировать строку даты/времени с пользовательского ввода и преобразовать в UTC на основе информации timzeone, недоступной в строке для datetime.strptime() (любые предложения?). Есть ли простой способ сделать это?Дата, заданная пользователем

В идеале, в google-приложении я бы хотел получить местное время с tzinfo из браузера, если это возможно.

timezone_string = "GMT-0800" 
fields = ("eventstartmonth","eventstartday", "eventstartyear", "eventstarttimehour", "eventstarttimeampm") 
date_string = '_'.join(map(lambda x: self.request.get(x), fields)) 
# date_string = "01_11_2000_1:35_PM" 

dt = datetime.datetime.strptime(date_string, "%m_%d_%Y_%I:%M_%p") 
# how to convert dt into a tz-aware datetime, and then to UTC 
+0

Возможный дубликат [В GAE, как я могу показать дату по правильному клиенту TimeZone?] (Http://stackoverflow.com/questions/868708/on-gae-how-may-i-show-a- дата-по-право-клиент-часовой пояс) – msw

+0

закрыть, у этого есть некоторая релевантная информация (спасибо), но не полностью. Я мог бы использовать немного более «ручное» с tzinfo-стратегиями – Kyle

+1

, это меня озадачивает, что у python нет надежной реализации для обработки временных интервалов. – Kyle

ответ

0

В поисках подобной информации я наткнулся на demo app engine app (с включенным источником), что свидетельствует о том, как конвертировать в часовых пояса образом, что это похоже на то, что вы просили. Однако, к сожалению, вам нужно создать пользовательские классы tzinfo (объяснение/код в демонстрационном приложении, приведенном выше) для каждого часового пояса, который вы будете преобразовывать.

Если вам нужно иметь возможность обрабатывать любой часовой пояс и/или хотите использовать простой маршрут, я бы рекомендовал использовать модуль pytz. Однако имейте в виду, что pytz - довольно громоздкий модуль, который вам нужно будет загрузить в ваш экземпляр GAE.

Смежные вопросы