2014-12-11 3 views
1

У меня есть список DateTimes в часовом поясе ЕС:конвертировать время даты из временной зоны ЕС PST

[u'2014-11-01T09:00:00+01:00', u'2014-11-02T00:00:00+01:00', u'2014-11-03T00:00:00+01:00', u'2014-11-04T00:00:00+01:00', u'2014-11-05T00:00:00+01:00', u'2014-11-06T00:00:00+01:00', u'2014-11-07T00:00:00+01:00', u'2014-11-08T00:00:00+01:00', u'2014-11-09T00:00:00+01:00', u'2014-11-10T00:00:00+01:00', u'2014-11-11T00:00:00+01:00', u'2014-11-12T00:00:00+01:00', u'2014-11-13T00:00:00+01:00', u'2014-11-14T00:00:00+01:00', u'2014-11-15T00:00:00+01:00', u'2014-11-16T00:00:00+01:00', u'2014-11-17T00:00:00+01:00', u'2014-11-18T00:00:00+01:00', u'2014-11-19T00:00:00+01:00', u'2014-11-20T00:00:00+01:00', u'2014-11-21T00:00:00+01:00', u'2014-11-22T00:00:00+01:00', u'2014-11-23T00:00:00+01:00', u'2014-11-24T00:00:00+01:00', u'2014-11-25T00:00:00+01:00', u'2014-11-26T00:00:00+01:00', u'2014-11-27T00:00:00+01:00', u'2014-11-28T00:00:00+01:00', u'2014-11-29T00:00:00+01:00', u'2014-11-30T00:00:00+01:00', u'2014-12-01T00:00:00+01:00'] 

Как конвертировать каждый из них в часовом поясе PST?

+0

Рассмотрите возможность использования [dateutil] (http://labix.org/python-dateutil) или [pytz] (http://pytz.sourceforge.net/) с 'Америка/Los_Angeles' времени зона. (Dateutil также поможет с разбором.) –

ответ

0

Это следует сделать это:

from pytz import timezone 
import pytz 
from dateutil.parser import parse 

l = [u'2014-11-01T09:00:00+01:00', u'2014-11-02T00:00:00+01:00', u'2014-11-03T00:00:00+01:00', u'2014-11-04T00:00:00+01:00', u'2014-11-05T00:00:00+01:00', u'2014-11-06T00:00:00+01:00', u'2014-11-07T00:00:00+01:00', u'2014-11-08T00:00:00+01:00', u'2014-11-09T00:00:00+01:00', u'2014-11-10T00:00:00+01:00', u'2014-11-11T00:00:00+01:00', u'2014-11-12T00:00:00+01:00', u'2014-11-13T00:00:00+01:00', u'2014-11-14T00:00:00+01:00', u'2014-11-15T00:00:00+01:00', u'2014-11-16T00:00:00+01:00', u'2014-11-17T00:00:00+01:00', u'2014-11-18T00:00:00+01:00', u'2014-11-19T00:00:00+01:00', u'2014-11-20T00:00:00+01:00', u'2014-11-21T00:00:00+01:00', u'2014-11-22T00:00:00+01:00', u'2014-11-23T00:00:00+01:00', u'2014-11-24T00:00:00+01:00', u'2014-11-25T00:00:00+01:00', u'2014-11-26T00:00:00+01:00', u'2014-11-27T00:00:00+01:00', u'2014-11-28T00:00:00+01:00', u'2014-11-29T00:00:00+01:00', u'2014-11-30T00:00:00+01:00', u'2014-12-01T00:00:00+01:00'] 
amsterdam = timezone('Europe/Amsterdam') 
pst = timezone('US/Pacific') 
[parse(d).replace(tzinfo=amsterdam).astimezone(pst) for d in l] 
+0

не использовать '.replace (tzinfo = amsterdam)'. В «Европе/Амстердаме» в разное время есть несколько утильных утилов. '.replace()' метод выбирает неправильное смещение utc – jfs

0

Есть две независимые задачи:

  1. синтаксического анализа гк 3339 формат даты/времени в осознаваемому даты и времени объекта

    >>> from dateutil.parser import parse 
    >>> aware_dt = parse('2014-11-01T09:00:00+01:00') 
    >>> aware_dt 
    datetime.datetime(2014, 11, 1, 9, 0, tzinfo=tzoffset(None, 3600)) 
    
  2. новообращенного до America/Los_Angeles часовой пояс

    >>> import pytz 
    >>> tz = pytz.timezone('America/Los_Angeles') 
    >>> tz.normalize(aware_dt.astimezone(tz)) 
    datetime.datetime(2014, 11, 1, 1, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>) 
    
Смежные вопросы