Как преобразовать целочисленный формат даты в YYYYMMDD?

Python и Matlab довольно часто имеют целочисленные представления даты следующим образом:

733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0

эти числа соответствуют некоторым датам в этом году. Вы парни знают, какая функция может преобразовать их назад в формат YYYYMMDD?

миллион благодарностей!

15
задан John Topley 12 April 2010 в 15:28
поделиться

3 ответа

Здесь вам может помочь класс datetime.datetime. Следующее работает, если эти значения рассматриваются как целые дни (вы не указываете, что это такое).

>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'

Вы показываете значения как плавающие, а вышеприведенный вариант не принимает плавающие значения. Если вы сможете более подробно описать, что это за данные (и откуда они берутся), то можно будет дать более полный ответ.

17
ответ дан 1 December 2019 в 00:54
поделиться

Является ли 733828.0 отметкой времени? Если да, то вы можете сделать следующее:

import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')

PS

Я думаю, что Питер Хансен прав:)

Я не являюсь носителем английского языка. Просто пытаюсь помочь. Я не совсем понимаю разницу между меткой времени и порядковым номером: (

4
ответ дан 1 December 2019 в 00:54
поделиться

Поскольку пример из 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.

15
ответ дан 1 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: