Python 如何提取Matlab中datenum的小数部分?

Python 如何提取Matlab中datenum的小数部分?,python,matlab,datetime,Python,Matlab,Datetime,我在matlab中得到了以下代码 timestamp = 1478084255 ; TimeZone = 'Europe/Amsterdam' ; CorrectionToMATLABTime = datenum(1970, 1, 1, 0, 0,0) ; matlab_timestamp = CorrectionToMATLABTime + timestamp/86400 ; d = datetime( datevec(matlab_timestamp), 'TimeZone', 'UTC'

我在matlab中得到了以下代码

timestamp = 1478084255 ;
TimeZone = 'Europe/Amsterdam' ;
CorrectionToMATLABTime = datenum(1970, 1, 1, 0, 0,0) ;

matlab_timestamp = CorrectionToMATLABTime + timestamp/86400 ;
d = datetime( datevec(matlab_timestamp), 'TimeZone', 'UTC' );
d.TimeZone = TimeZone ; 
datenum(d)

# 736636.498321759
python中,获得datenum的小数部分(即0.498321759)的等分代码是什么

以下是我所做的:

from datetime import datetime
import pytz

tz = pytz.timezone('UTC')
date_utc = datetime.fromtimestamp(1478084255).astimezone(tz)
first_date = datetime(date.year, 1, 1, tzinfo=tz)
(date_utc - first_date).seconds/(60*60*24)
# 0.45665509259259257

要准确回答您的问题:

import datetime
import pytz
tz = pytz.timezone('Europe/Amsterdam')
d = datetime.datetime.utcfromtimestamp(1478084255).replace(tzinfo = pytz.utc)
d = d.astimezone(tz).replace(tzinfo = pytz.utc)
f = datetime.datetime.combine(d.date(), datetime.time()).replace(tzinfo=pytz.utc)
(d-f).total_seconds() / (60* 60* 24) # 0.498321759
话虽如此,我认为你在计算的不是你认为你在计算的。matlab的datenum似乎完全忽略了
datetime
对象的“时区”部分,我怀疑这可能不是您想要的。您可以通过确认
datenum(d)
给出的结果与
datenum(datevec(d))
相同来检查上述情况


也许有必要明确地问一下,您希望从这个计算中得到什么,也就是说,检查一下它是否真的与您提供的代码相符。你到底想做什么?

准确回答你的问题:

import datetime
import pytz
tz = pytz.timezone('Europe/Amsterdam')
d = datetime.datetime.utcfromtimestamp(1478084255).replace(tzinfo = pytz.utc)
d = d.astimezone(tz).replace(tzinfo = pytz.utc)
f = datetime.datetime.combine(d.date(), datetime.time()).replace(tzinfo=pytz.utc)
(d-f).total_seconds() / (60* 60* 24) # 0.498321759
话虽如此,我认为你在计算的不是你认为你在计算的。matlab的datenum似乎完全忽略了
datetime
对象的“时区”部分,我怀疑这可能不是您想要的。您可以通过确认
datenum(d)
给出的结果与
datenum(datevec(d))
相同来检查上述情况

也许有必要明确地问一下,您希望从这个计算中得到什么,也就是说,检查一下它是否真的与您提供的代码相符。你到底想做什么?

那么
dn=datenum(d)呢;小数部分=dn-楼层(dn)?dn=datenum(d)怎么样;小数部分=dn-楼层(dn)