如何将整数日期格式转换为YYYYMMDD?

时间:2010-04-12 15:21:38

标签: 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格式吗?

感谢百万!

4 个答案:

答案 0 :(得分:17)

datetime.datetime class可以帮到你。以下是有效的,如果这些值被视为整数天(您没有指定它们是什么)。

>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'

您将值显示为浮点数,上面不会显示浮点数。如果您可以提供有关数据(及其来源)的更多详细信息,则可以提供更完整的答案。

答案 1 :(得分:15)

由于已经演示了Python示例,因此这里是matlab:

>> datestr(733828, 'yyyymmdd')

ans =

20090224

另外,请注意,虽然看起来很相似,但这些在Matlab和Python中实际上是不同的东西:

  

Matlab的
  序列日期编号表示整数和小数天数   从datenum('Jan-1-0000 00:00:00')返回的特定日期和时间开始   数字1.(0000年仅仅是一个参考点,并非意图   被解释为真实的一年。)

     

Python,datetime.date.fromordinal
  返回对应于公历格里高利序数的日期,其中第1年1月1日有序数1.

所以他们会有366天的差异,这显然是0年的长度。

答案 2 :(得分:5)

733828.0这样的日期是Rata Die日期,从公元1月1日开始计算(和小数部分天数)。它们可能是UTC或您的时区。

Julian Dates主要由天文学家使用,计算自公元前4713年1月1日格林威治中午以来的天数(和小数部分天数)。 Julian日期经常与Ordinal日期相混淆,Ordinal日期是当年1月1日的日期计数(2月2日=序数日33)。

所以datetime正在调用这些事情的序数日期,但我认为这只在本地有意义,在python的世界里。

答案 3 :(得分:4)

733828.0是时间戳吗?如果是这样,您可以执行以下操作:

import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')

PS

我认为Peter Hansen是对的:)。

我不是以英语为母语的人。只是想帮忙。我不太清楚时间戳和序数之间的区别:(