вторник, 5 апреля 2011 г.

Из datetime в timestamp и обратно

Для python  версии 2:

Из datetime в timestamp
import datetime
import time
dt = datetime.datetime.now() # datetime, из которой переводим в timestamp
print time.mktime(dt.timetuple()) # Вот, а это timestamp

Из timestamp в datetime
import datetime
timestamp = 1301990622 # timestamp, из которого переводим
print datetime.datetime.fromtimestamp(timestamp) # Результат будет требующийся datetime
 

Для python3 (спасибо, Илья Петраш):

from datetime import datetime
timestamp = datetime.today().timestamp()
print(timestamp) 

7 комментариев:

  1. from datetime import datetime
    timestamp = datetime.today().timestamp()
    print(timestamp)

    ОтветитьУдалить
    Ответы
    1.  Да, в python3 похоже так оно

      В python2 не работает
      Python 2.7.11 (default, Jun 17 2016, 20:01:51)
      [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
      Type "help", "copyright", "credits" or "license" for more information.
      >>> from datetime import datetime
      >>> timestamp = datetime.today().timestamp()
      Traceback (most recent call last):
      File "", line 1, in
      AttributeError: 'datetime.datetime' object has no attribute 'timestamp'

      Удалить
    2. Отредактировал для разных версий - спасибо

      Удалить
  2. Предложенный метод для python2 даёт в результате float с нулевой дробной частью, то есть не учитывает миллисекунды/микросекунды. Нативный метод .timestamp() в py3 их учитывает.
    Я у себя использовал такой workaround:

    timestamp = time.mktime(dt.timetuple()) + float(dt.microseconds) / 1000000

    ОтветитьУдалить