datetime.datetime.fromtimestamp()
є правильним, за винятком того, що у вас, ймовірно, є часова мітка в мілісекундах (як у JavaScript), але fromtimestamp()
очікується, що часова мітка Unix за секунди.
Зробіть так:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
і результат:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Це відповідає на ваше запитання?
EDIT : JF Себастьян правильно запропонував використовувати справжній поділ на 1e3
(float 1000
). Різниця значна, якщо ви хочете отримати точні результати, тому я змінив свою відповідь. Різниця обумовлена поведінкою Python 2.x за замовчуванням, яка завжди повертається int
при діленні (за допомогою /
оператора) int
на int
(це називається діленням підлоги ). Замінивши дільник 1000
(будучи an int
) на 1e3
дільник (представляючи його 1000
як плаваючий) або на float(1000)
(або 1000.
тощо), поділ стає справжнім поділом . Python повертає 2.x , float
коли діляться int
на float
, float
по int
,float
і float
т. д. І коли в часовій мітці, переданій fromtimestamp()
методу, є якась дробова частина , результат цього методу також містить інформацію про цю дробову частину (як кількість мікросекунд).
/ 1e3