Для тех, кто найдет этот поток в будущем, обратите внимание, что принятый ответ не всегда возвращает правильное значение, если вы его обобщите, так как он будет задыхаться от операторов регулярных выражений, таких как $
и .
. Вот лучшая версия, которая может обрабатывать любую иглу :
function occurrences (haystack, needle) {
var _needle = needle
.replace(/\[/g, '\\[')
.replace(/\]/g, '\\]')
return (
haystack.match(new RegExp('[' + _needle + ']', 'g')) || []
).length
}
Отметьте в Python 2.6 + и Py3K, %f символ ловит микросекунды.
>>> datetime.datetime.strptime("2008-09-03T20:56:35.450686Z", "%Y-%m-%dT%H:%M:%S.%fZ")
Посмотрите выпуск здесь
import re,datetime s="2008-09-03T20:56:35.450686Z" d=datetime.datetime(*map(int, re.split('[^\d]', s)[:-1]))
Попробуйте модуль iso8601 ; это делает точно это.
существует несколько других опций, упомянутых на страница WorkingWithTime на Wiki python.org.
Какова точная ошибка, которую Вы получаете? Похож на него следующее?
>>> datetime.datetime.strptime("2008-08-12T12:20:30.656234Z", "%Y-%m-%dT%H:%M:%S.Z")
ValueError: time data did not match format: data=2008-08-12T12:20:30.656234Z fmt=%Y-%m-%dT%H:%M:%S.Z
, Если да, можно разделить входную строку на".", и затем добавить микросекунды к дате и времени, Вы добрались.
Попытка это:
>>> def gt(dt_str):
dt, _, us= dt_str.partition(".")
dt= datetime.datetime.strptime(dt, "%Y-%m-%dT%H:%M:%S")
us= int(us.rstrip("Z"), 10)
return dt + datetime.timedelta(microseconds=us)
>>> gt("2008-08-12T12:20:30.656234Z")
datetime.datetime(2008, 8, 12, 12, 20, 30, 656234)
Иначе должен использовать специализированный синтаксический анализатор для ISO 8601, должен использовать изосинтаксический анализ функция dateutil синтаксического анализатора:
from dateutil import parser
date = parser.isoparse("2008-09-03T20:56:35.450686+01:00")
print(date)
Вывод:
2008-09-03 20:56:35.450686+01:00
Эта функция также упоминается в документация для стандартной функции Python datetime.fromisoformat:
А больше полнофункционального синтаксического анализатора ISO 8601, dateutil.parser.isoparse доступно в стороннем пакете dateutil.