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