2014-01-06 3 views
1

Я хочу написать код в python, который преобразует все даты (в разных форматах) в стандартный формат. Я видел вопрос о stackoverflow Converting various different date formats in to one common date format Java or Perl?Преобразование списка дат в формате GMT ​​

Я хочу сделать это в python.

Я попытался это:

DEFAULT_DATE = datetime.datetime(datetime.datetime.now().year, 1, 1) 
dt = parser.parse(date,default = DEFAULT_DATE) 

Original              Modified 
1.1995-01-24T09:08:17.1823213       1995-01-24 09:08:17.182321 
2. Wed, 16 Jun 94 07:29:35 CST       1994-06-16 07:29:35 
3. Thu, 13 Oct 94 10:13:13 -0700      1994-10-13 10:13:13-07:00 
4. Wed, 9 Nov 1994 09:50:32 -0500 (EST)     1994-11-09 09:50:32-05:00 
5. 21 dec 17:05           2014-12-21 17:05:00 
6. 21-dec 17:05           2014-12-21 17:05:00 
7. 21/dec 17:05           2014-12-21 17:05:00 
8. 21/dec/93 17:05          1993-12-21 17:05:00 
9. 16 Nov 94 22:28:20 PST        1994-11-16 22:28:20 
10. 1999 10:02:18 'GMT'         1999-01-01 10:02:18+00:00 

Мне нужно преобразовать время по Гринвичу, а также. Как и для 2,3,4,9, оно отображается в то же время, что и в исходном списке. Я хочу конвертировать их в GMT. Для дат и времени, например, в 4,9, в EST и PST и т. Д., Я хочу преобразовать их в GMT.

+0

Что проблема вы столкнулись? –

+0

Не могли бы вы отредактировать свое сообщение, чтобы добавить нужный вам результат? – rlms

+0

Отредактировано сообщение. – blackmamba

ответ

1

Вы можете преобразовать все DateTimes в UTC, рассматривая все наивные объекты даты-времени как UTC:

import pytz 
def to_utc(dt): 
    try: 
     return dt.astimezone(pytz.utc) 
    except ValueError: 
     return pytz.utc.localize(dt) 

Демо:

>>> print '\n'.join(original) 
1995-01-24T09:08:17.1823213 
Wed, 16 Jun 94 07:29:35 CST 
Thu, 13 Oct 94 10:13:13 -0700 
Wed, 9 Nov 1994 09:50:32 -0500 (EST) 
21 dec 17:05 
21-dec 17:05 
21/dec 17:05 
21/dec/93 17:05 
16 Nov 94 22:28:20 PST 
1999 10:02:18 'GMT' 
>>> modified = [parser.parse(od, default=DEFAULT_DATE) for od in original] 
>>> in_utc = [to_utc(md) for md in modified] 
>>> for d in in_utc: 
...  print d 
... 
1995-01-24 09:08:17.182321+00:00 
1994-06-16 07:29:35+00:00 
1994-10-13 17:13:13+00:00 
1994-11-09 14:50:32+00:00 
2014-12-21 17:05:00+00:00 
2014-12-21 17:05:00+00:00 
2014-12-21 17:05:00+00:00 
1993-12-21 17:05:00+00:00 
1994-11-16 22:28:20+00:00 
1999-01-01 10:02:18+00:00 
+0

Если я конвертирую Wed, 16 Jun 94 07:29:35 CST GMT GMT означает, что время должно быть 1994-06-16 13: 29: 35 + 00: 00, правильно? – blackmamba

+0

Это работает. Спасибо. – blackmamba

0

В этом случае заказ docs на номер dateutil.parser, особенно раздел tzinfo может пригодиться вам.

+0

Я видел это. Но я не знаю, как использовать это с моим кодом. – blackmamba

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