Python 如何提取Matlab中datenum的小数部分?
我在matlab中得到了以下代码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'
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)代码>?