Python datetime для Matlab datenum - PullRequest
       2

Python datetime для Matlab datenum

5 голосов
/ 08 января 2012

Как конвертировать Python datetime в Matlab datetnum?

Ответы [ 3 ]

7 голосов
/ 08 января 2012

Для сериализации datetime в виде строки можно использовать strftime на стороне Python:

import datetime
d = datetime.datetime.now()
print (d.strftime("%d-%b-%Y %H:%M:%S"))

Согласно MatLab docs datenum знает, как его проанализировать.

6 голосов
/ 22 февраля 2012

На основании ответа Баваза - теперь включая микросекунды:

def datetime2matlabdn(dt):
   mdn = dt + timedelta(days = 366)
   frac_seconds = (dt-datetime.datetime(dt.year,dt.month,dt.day,0,0,0)).seconds / (24.0 * 60.0 * 60.0)
   frac_microseconds = dt.microsecond / (24.0 * 60.0 * 60.0 * 1000000.0)
   return mdn.toordinal() + frac_seconds + frac_microseconds
5 голосов
/ 13 февраля 2012

Повернув вспять то, что было сделано здесь , я получил:

def datetime2matlabdn(dt):
   ord = dt.toordinal()
   mdn = dt + timedelta(days = 366)
   frac = (dt-datetime(dt.year,dt.month,dt.day,0,0,0)).seconds / (24.0 * 60.0 * 60.0)
   return mdn.toordinal() + frac

Должно работать и с timedelta.microseconds.

В бездействии:

n = datetime.now ()

datetime.datetime (2012, 2, 13, 6, 56, 2, 619000)

datetime2matlabdn (п) * ** одна тысяча двадцать один * тысяча двадцать-два 734912,28891203704

В Matlab:

>> datestr (734912.28891203704)

ans = 13-фев-2012 06: 56: 02

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...