Ответ 1
strptime()
, безусловно, правильный подход, это просто метод класса для класса datetime
(путаная часть модуля datetime
).
То есть, datetime.datetime.strptime()
- это то, что вы ищете (а не datetime.strptime()
.
Я соскабливаю страницу, которая включает, среди прочего, информацию о дате. Поэтому у меня есть переменная с именем 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'
в дату?
strptime()
, безусловно, правильный подход, это просто метод класса для класса datetime
(путаная часть модуля datetime
).
То есть, datetime.datetime.strptime()
- это то, что вы ищете (а не datetime.strptime()
.
Попробуй это:
Для использования с 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)
Благодаря ответу на комментарий от @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)
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
А также поддерживает негригорианские календарные системы.