Как сделать strtotime в python?

Я соскабливаю страницу, которая включает, среди прочего, информацию о дате. Поэтому у меня есть переменная с именем warrant_issued которая содержит u'11/5/2003' - я хочу сохранить это как машиночитаемую дату. PHP имеет strtotime функцию strtotime которая работает сказочно. Я надеялся, что datetime strptime мне поможет, но в моей версии datetime это не похоже, - вот все, что было на моей вкладке в datetime.

In [231]: datetime.
datetime.MAXYEAR           datetime.__hash__          datetime.__sizeof__
datetime.MINYEAR           datetime.__init__          datetime.__str__
datetime.__class__         datetime.__name__          datetime.__subclasshook__
datetime.__delattr__       datetime.__new__           datetime.date
datetime.__dict__          datetime.__package__       datetime.datetime
datetime.__doc__           datetime.__reduce__        datetime.datetime_CAPI
datetime.__file__          datetime.__reduce_ex__     datetime.time
datetime.__format__        datetime.__repr__          datetime.timedelta
datetime.__getattribute__  datetime.__setattr__       datetime.tzinfo

Я использую iPython 2.7. 2+

Я лаяю здесь неправильное дерево? Какой лучший способ превратить u'11/5/2003' в дату?

Ответ 1

strptime(), безусловно, правильный подход, это просто метод класса для класса datetime (путаная часть модуля datetime).

То есть, datetime.datetime.strptime() - это то, что вы ищете (а не datetime.strptime().

Ответ 2

Попробуй это:

Для использования с datetime module, здесь

>>>import datetime
>>>a = u'11/5/2003'
>>>time1 = datetime.datetime.strptime(a, "%m/%d/%Y")
>>>print time1
datetime.datetime(2003, 11, 5, 0, 0)

В ipython:

In [1]: import datetime

In [2]: a = u'11/5/2003'

In [3]: time1 = datetime.datetime.strptime(a, "%m/%d/%Y")

In [4]: print time1
2003-11-05 00:00:00

Использование с time module, документация здесь

>>>import time
>>>a = u'11/5/2003'
>>>time1 = time.strptime(a, "%m/%d/%Y")
>>>print time1
time.struct_time(tm_year=2003, tm_mon=11, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=309, tm_isdst=-1)

Ответ 3

Благодаря ответу на комментарий от @David Cain:

Библиотека dateutil может анализировать строки даты и времени (вывод их формата). Однако обратите внимание, что "11/5/2003" не является однозначным форматом (MM/DD или DD/MM отличается по языку), поэтому dateutil следует использовать с осторожностью в этом случае. - Дэвид Каин

Поэтому альтернативной хорошей практикой является использование библиотеки dateutil:

>>> from dateutil.parser import parse
>>> dt = parse('2016/12/05 05:18 pm')
>>> dt
datetime.datetime(2016, 12, 5, 17, 18)
>>> dt.timestamp()
1480929480.0

>>> parse('16/11/12')
>>> datetime.datetime(2012, 11, 16, 0, 0)

Ответ 4

strtotime вы работаете в PHP, может быть наиболее похож на dateparser.

Обратите внимание, если у вас нет библиотеки dateparser.

Установите его с

pip3 install dateparser 

Если вы используете conda

conda install dateparser

Эта библиотека понимает более 200 языковых языковых стандартов и многочисленные форматы независимо от языка.

Разбор общих терминов также работает:

import dateparser
print (dateparser.parse('yesterday')) #2019-05-19 08:08:14.934992

А также поддерживает негригорианские календарные системы.