Существует ли простой способ преобразовать время RFC 3339 в регулярную метку времени Python?
У меня есть сценарий, который читает Atom-ленту, и я хотел бы смочь сравнить метку времени объекта в Atom-ленте ко времени изменения файла.
Я замечаю от спецификации ATOM, что даты ATOM включают смещение часового пояса (Z
) но в моем случае нет ничего после Z
таким образом, я предполагаю, что мы можем принять GMT.
Я предполагаю, что мог проанализировать время с regex каким-то, но я надеялся, что Python имел встроенный способ сделать его, что я просто не смог найти.
Не построен, afaik.
feed.date.rfc3339 Это модуль библиотеки Python с функциями преобразования строк временных меток в формате RFC 3339 в значения Python с плавающей точкой времени, и наоборот. RFC 3339 - это формат метки времени, используемый в формате синдикации Atom feed.
Это BSD-лицензия.
http://home.blarg.net/~steveha/pyfeed.html
(Редактировано так, чтобы было понятно, что я не писал этого. :-)
.feedparser.py обеспечивает надежный / расширяемый способ анализа различных форматов даты, которые могут встречаться в реальных потоках atom / rss:
>>> from feedparser import _parse_date as parse_date
>>> parse_date('1985-04-12T23:20:50.52Z')
time.struct_time(tm_year=1985, tm_mon=4, tm_mday=12, tm_hour=23, tm_min=20,
tm_sec=50, tm_wday=4, tm_yday=102, tm_isdst=1)
Вы не включаете пример, но если у вас нет Z-смещения или часового пояса, и вы предполагаете, что вам не нужны длительности, а только основное время, то, возможно, вам это подойдет:
import datetime as dt
>>> dt.datetime.strptime('1985-04-12T23:20:50.52', '%Y-%m-%dT%H:%M:%S.%f')
datetime.datetime(1985, 4, 12, 23, 20, 50, 520000)
Функция strptime() была добавлена в модуль datetime на Python 2.5, так что некоторые люди еще не знают, что она там есть.
Редактирование: Функция time.strptime() существует уже некоторое время и работает примерно так же, чтобы выдавать значение struct_time:
>>> ts = time.strptime('1985-04-12T23:20:50.52', '%Y-%m-%dT%H:%M:%S.%f')
>>> ts
time.struct_time(tm_year=1985, tm_mon=4, tm_mday=12, tm_hour=23, tm_min=20, tm_sec=50, tm_wday=4, tm_yday=102, tm_isdst=-1)
>>> time.mktime(ts)
482210450.0
http://pypi.python.org/pypi/iso8601/, похоже, в состоянии разобрать iso 8601, в котором RFC 3339 является подмножеством, может быть, это может быть полезным, но опять же, не встроенным.
.http://bugs.python.org/issue15873 (дубликат http://bugs.python.org/issue5207 )
Похоже, что встроенного пока нет.