2010-11-01 7 views
11

У меня самое сложное время, чтобы получить текущее время в часовом поясе EDT.Python - дата и время определенного часового пояса

print datetime.time(datetime.now()).strftime("%H%M%S") 

datetime.now ([TZ]) имеет необязательный TZ аргумент, но он должен быть типа datetime.tzinfo ... Я не бен в состоянии понять, как определить объект tzinfo восточно- часовой пояс ... Похоже, это должно быть довольно просто, но я не могу понять, не импортируя дополнительную библиотеку.

ответ

20

Я не очень разбираюсь в часовом поясе EDT, но этот пример должен служить вашей цели.

import datetime 

datetime.datetime.now должен быть передан информацию о часовом поясе, который должен быть типа datetime.tzinfo. Вот класс, который реализует это с некоторыми из необходимых функций. Здесь я не предоставляю никаких подробных сведений о свете, поскольку это пример.

class EST(datetime.tzinfo): 
    def utcoffset(self, dt): 
     return datetime.timedelta(hours=-5) 

    def dst(self, dt): 
     return datetime.timedelta(0) 

Теперь вы можете использовать это, чтобы получить информацию с указанием временной зоны корректности:

print datetime.datetime.now(EST()) 

Выход:

2010-11-01 13:44:20.231259-05:00 
+0

спасибо - разочарование, вам нужно создать целый класс, чтобы указать часовой пояс (vs просто передавая простую переменную) – wuntee

+0

@wuntee: Это не так. Это подразумевалось как объяснение. Ответ adw содержит библиотеку - pytz, которая может использоваться для передачи информации tzinfo. Этот факт, который будет использоваться повторно и такие аспекты, как dst и т. Д., Уже предоставляется модулем pytz. – pyfunc

8

tzinfo класс только определяет интерфейс, вам необходимо будет реализовать (см. документацию для примера) или использовать сторонний модуль, который его реализует, например pytz.

Редактировать: Извините, я пропустил, что вы не хотите импортировать другую библиотеку.

+0

+1 для обеспечения модуля pytz, поскольку я был сосредоточен на объяснении tzinfo. – pyfunc

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