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

StackOverflow https://stackoverflow.com/questions/2623156

  •  26-09-2019
  •  | 
  •  

Вопрос

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'

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

Другие советы

Поскольку пример Питона уже продемонстрирован, вот MatLab One:

>> datestr(733828, 'yyyymmdd')

ans =

20090224

Кроме того, обратите внимание, что, выглядя подобным, это на самом деле разные вещи в Matlab и Python:

Matlab.
Номер серийного даты представляет собой целое и дробное количество дней с определенной даты и времени, где datenum('Jan-1-0000 00:00:00') Возвращает номер 1. (год 0000 - это просто контрольная точка и не предназначена для интерпретации как реальный год вовремя.)

Питон, datetime.date.fromordinal
Верните дату, соответствующую проливочному григорианскому порядкому, где 1 января года 1 имеет порядковую 1.

Таким образом, они будут отличаться на 366 дней, что, по-видимому, продолжительностью года 0.

Даты типа 733828.0 - это даты Rata Dity, считаются с 1 января 1 AD (и десятичная доля дней). Они могут быть UTC или на ваш часовой пояс.

Джулианские даты, используемые в основном астрономами, считают дни (и десятичную долю дней) с 1 января 4713 гг. Гринвич Нун. Дата Джулиана часто путают природонарному дату, которая является подсчетом даты с 1 января текущего года (2 февраля = природовой день 33).

Таким образом, dateTime называет эти вещи порядковыми датами, но я думаю, что это только имеет смысл локально, в мире Python.

733828,0 метеотехника? Если это так, вы можете сделать следующее:

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

PS.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top