Python и Matlab довольно часто имеют целочисленные представления даты следующим образом:
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
эти числа соответствуют некоторым датам в этом году. Вы парни знают, какая функция может преобразовать их назад в формат YYYYMMDD?
миллион благодарностей!
Здесь вам может помочь класс datetime.datetime
. Следующее работает, если эти значения рассматриваются как целые дни (вы не указываете, что это такое).
>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'
Вы показываете значения как плавающие, а вышеприведенный вариант не принимает плавающие значения. Если вы сможете более подробно описать, что это за данные (и откуда они берутся), то можно будет дать более полный ответ.
Является ли 733828.0 отметкой времени? Если да, то вы можете сделать следующее:
import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')
Я думаю, что Питер Хансен прав:)
Я не являюсь носителем английского языка. Просто пытаюсь помочь. Я не совсем понимаю разницу между меткой времени и порядковым номером: (
Поскольку пример из Python уже был продемонстрирован, вот пример из Matlab:
>> datestr(733828, 'yyyymmdd')
ans =
20090224
Также обратите внимание, что, хотя они выглядят похоже, это разные вещи в Matlab и Python:
Matlab
Порядковый номер даты представляет собой целое и дробное число дней от определенной даты и времени, гдеdatenum('Jan-1-0000 00:00:00')
возвращает число 1. (Год 0000 является просто точкой отсчета и не предназначен для того, чтобы интерпретироваться как реальный год во времени.)Python,
datetime.date.fromordinal
Возвращает дату, соответствующую пролептическому григорианскому ординалу, где 1 января года 1 имеет ординал 1.
Таким образом, они будут отличаться на 366 дней, что, по-видимому, является длиной года 0.