Jam*_*ond 15 python matlab datetime-format
Python和Matlab通常具有如下的整数日期表示:
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
这些数字对应于今年的某些日期.你们知道哪个函数可以将它们转换回YYYYMMDD格式吗?
太感谢了!
Pet*_*sen 17
这datetime.datetime堂课可以帮到你.以下是有效的,如果这些值被视为整数天(您没有指定它们是什么).
>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'
Run Code Online (Sandbox Code Playgroud)
您将值显示为浮点数,并且上面没有浮点数.如果您可以提供有关数据(及其来源)的更多详细信息,则可以提供更完整的答案.
Sil*_*ost 15
由于已经演示了Python示例,这里是matlab的一个:
>> datestr(733828, 'yyyymmdd')
ans =
20090224
Run Code Online (Sandbox Code Playgroud)
另外,请注意,虽然看起来相似,但这些在Matlab和Python中实际上是不同的东西:
Matlab
序列日期编号表示特定日期和时间的整数和小数天数,其中datenum('Jan-1-0000 00:00:00')返回数字1.(0000年仅仅是一个参考点,并不打算被解释为实际年份.)Python, 返回对应于公历格里高利序数的日期,其中1年1月1日的序数为1.
datetime.date.fromordinal
所以他们会有366天不同,这显然是0年的长度.
733828.0 是时间戳吗?如果是这样,您可以执行以下操作:
import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
我认为彼得·汉森是对的:)
我的母语不是英语。只是想帮忙。我不太清楚时间戳和序数之间的区别:(
像733828.0这样的日期是Rata Die日期,从公元1年1月1日开始计算(和小数部分天数).它们可能是UTC或您的时区.
Julian Dates主要由天文学家使用,计算自公元前4713年1月1日格林威治中午以来的天数(和小数部分天数).Julian日期经常与Ordinal日期混淆,Ordinal日期是当年1月1日(2月2日=序数日33)的日期计数.
所以datetime正在调用这些东西的序数日期,但我认为这只在本地有意义,在python的世界里.