python2.6.6 Преобразование временной отметки времени Apache в секундах с эпохи (стиль unix)

Поскольку я полностью потерян в десятках способов, которые вы найдете в stackoverflow, чтобы сделать преобразования timestamp, поэтому я задам здесь полный вопрос:

Преобразуйте эту метку времени из журнала apache (в часовой пояс CEST):

30/Aug/2015:05:13:53 +0200 

В этом:

 1440904433 

С помощью

 $ python --version Python 2.6.6 

Проверка:

 $ date --date @1440904433 Sun Aug 30 05:13:53 CEST 2015 $ date -u --date @1440904433 Sun Aug 30 03:13:53 UTC 2015 

Плохие результаты:

 1440911633 1440908033 

Мой текущий код идет до:

 >>> from dateutil import parser >>> parser.parse("30/Aug/2015:05:13:53 +0200".replace(':',' ',1)) datetime.datetime(2015, 8, 30, 5, 13, 53, tzinfo=tzoffset(None, 7200)) 

Пожалуйста, не предлагайте модуль pytz, у меня его нет, и я не могу его установить. Пожалуйста, не предлагайте решения для python3

  • Регулярное выражение для соответствия разделенному запятыми списку ключа = значение, в котором значение может содержать запятые
  • Почему sys.exit () не вызывается при вызове внутри потока в Python?
  • Как попасть в python нажатие клавиши без нажатия клавиши ввода?
  • Если все в списке == что-то
  • Создание кода Python 2.7 с помощью Python 2.6
  • «Аутсорсинг» обработки исключений для декоратора
  • bash: pip: команда не найдена
  • Запуск пакета python
  • One Solution collect form web for “python2.6.6 Преобразование временной отметки времени Apache в секундах с эпохи (стиль unix)”

    Два шага:

    1. Преобразуйте временную строку в известный объект datetime (или наивный объект datetime который представляет время в UTC).

       >>> from dateutil import parser >>> parser.parse("30/Aug/2015:05:13:53 +0200".replace(':', ' ', 1)) datetime.datetime(2015, 8, 30, 5, 13, 53, tzinfo=tzoffset(None, 7200)) 

      Вы уже это сделали. См. Как анализировать даты с -0400 строки часового пояса в python? о том, как это сделать, используя только stdlib.

    2. Преобразовать известный объект datetime в «секунды с эпохи» :

       >>> from datetime import datetime >>> from dateutil import tz >>> td = d - datetime(1970, 1, 1, tzinfo=tz.tzutc()) >>> td datetime.timedelta(16677, 11633) >>> (td.microseconds + (td.seconds + td.days * 86400) * 10**6) // 10**6 1440904433 

      Используйте / и включите from __future__ import division , чтобы получить доли секунды. Если вам не нужна поддержка фракций; вы можете упростить формулу:

       >>> td.seconds + td.days * 86400 1440904433 

      Если вы получаете время utc на первом шаге, используя только stdlib, вам здесь не нужно dateutil.tz . См. Раздел Преобразование даты datetime.date в метку времени UTC в Python

    Вот решение Python 3 для посетителей из поисковой системы:

     >>> from datetime import datetime >>> d = datetime.strptime("30/Aug/2015:05:13:53 +0200", "%d/%b/%Y:%H:%M:%S %z") >>> d.timestamp() 1440904433.0 
    Interesting Posts

    TypeError: module .__ init __ () принимает не более 2 аргументов (3 данных)

    Передача параметра в DB .execute для WHERE IN … INT list

    Невозможно разобрать простой json с помощью python

    Пидот не играет хорошо с перерывами?

    Бенчмаркинг (python против c ++ с использованием BLAS) и (numpy)

    Есть ли способ перегрузить + = в python?

    Как я могу проверить, является ли число идеальным квадратом?

    Как создать LabelFrame с полосой прокрутки в Tkinter?

    Есть ли какой-либо прямой способ генерации PDF из файла уценки с помощью python

    Функция read () Python возвращает пустую строку

    Переопределение метода dict.update () в подклассе для предотвращения перезаписи ключей dict

    Как выбрать точку в подзаголовке и выделить ее в смежных подзаговорах в matplotlib (расширение до области точек)

    Можете ли вы определить псевдонимы для импортированных модулей в Python?

    Как начать сеанс в веб-приложении Python?

    Проблемы с округлением десятичных разрядов (python)

    Python - лучший язык программирования в мире.