Python 和 Matlab 经常有如下整数日期表示:
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
这些数字对应于今年的一些日期。你们知道哪个函数可以将它们转换回 YYYYMMDD 格式吗?
太感谢了!
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'
您将值显示为浮点数,而上述内容不采用浮点数。如果您可以提供有关数据是什么(以及数据来自何处)的更多详细信息,则可以给出更完整的答案。
由于已经演示了 Python 示例,因此这里是 matlab 示例:
>> datestr(733828, 'yyyymmdd')
ans =
20090224
另外,请注意,虽然看起来很相似,但它们在 Matlab 和 Python 中实际上是不同的:
Matlab
序列日期数字表示从特定日期和时间开始的整数和小数天数,其中datenum('Jan-1-0000 00:00:00')
返回数字 1。(年份 0000 只是一个参考点,并不打算解释为时间上的真实年份。)Python, 返回对应于预测公历序数的日期,其中第 1 年的 1 月 1 日有序数 1。
datetime.date.fromordinal
所以它们会相差 366 天,这显然是 0 年的长度。
像 733828.0 这样的日期是 Rata Die 日期,从公元 1 月 1 日开始计算(以及天的小数部分)。它们可能是 UTC 或您的时区。
朱利安日期,主要由天文学家使用,计算自公元前 4713 年 1 月 1 日格林威治中午以来的天数(和天的小数部分)。Julian date 经常与 Ordinal date 混淆,Ordinal date 是从当年 1 月 1 日开始计算的日期(2 月 2 日 = 第 33 天)。
所以 datetime 将这些东西称为序数日期,但我认为这仅在本地有意义,在 python 的世界中。
733828.0 是时间戳吗?如果是这样,您可以执行以下操作:
import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')
我认为彼得汉森是对的:)
我不是以英语为母语的人。只是想帮忙。我不太清楚时间戳和序数之间的区别:(