2014-08-26 2 views
2

Я хочу знать, как преобразовать этот формат датыPython: преобразование сложной даты и времени строка временной метки

"Thu 21st Aug '14, 4:58am" 

на метку времени с Python?

Другой формат, который нужно преобразовать:

"Yesterday, 7:22am" 

Я попытался синтаксического анализа Util без успеха ...

ответ

7

Если вы еще не сделали этого, посмотрите на parse функции в dateutils.parser для разбора строки представления дат ...

>>> from dateutil.parser import parse 
>>> dt = parse("Thu 21st Aug '14, 4:58am") 
>>> dt 
datetime.datetime(2014, 8, 21, 4, 58) 

..., а затем преобразовать datetime объект в метку времени, вы можете сделать последующее ING:

>>> import time 
>>> import datetime 
>>> time.mktime(dt.timetuple()) 
1408593480.0 

В стороне замечания, parse полезная функция, которая может распознавать огромный диапазон различных форматов даты. Однако иногда слишком полезно и видит даты, где, возможно, дата не предназначена:

>>> parse("14, m 23") 
datetime.datetime(2014, 8, 23, 0, 14) 

Если вы хотите, чтобы разобрать такие выражения, как «Вчера, 7:22», вы могли бы сделать одну из двух вещей:

  1. Заменить «вчера», «вчера», «yday» и другие вариации с «25/08/2014» (или другой соответствующей датой), а затем использовать parse на новой строке.

  2. Используйте другую библиотеку для разбора строки. parsedatetime это один вариант ...

Вот parsedatetime в действии на вашем примере:

>>> import parsedatetime.parsedatetime as pdt 
>>> p = pdt.Calendar() 
>>> d = p.parse("Yesterday, 7:22am") 
>>> d 
((2014, 8, 25, 7, 22, 0, 0, 237, -1), 3) 

Чтобы включить эту дату представления d в datetime объекта, вы можете распаковать кортеж так:

>>> dt = datetime.datetime(*d[0][:7]) 
>>> dt 
datetime.datetime(2014, 8, 25, 7, 22) 

Теперь dt можно легко преобразовать в метку времени, как описано выше.

+0

и создать метку времени? –

+0

Отредактировано, спасибо. Дайте мне знать, нужна ли еще работа ... –

+0

parse util can not проанализируйте этот формат: «Вчера, 7:22 утра», что я могу сделать, чтобы разобрать этот формат на timestamp? – krukita

0

Вы можете использовать это:

a = "Thu 21st Aug '14, 4:58am" 
datetime.datetime.strptime(a, '%a %dst %b \'%y, %H:%M%p') 
Смежные вопросы