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

9q78igpj  于 2023-10-23  发布在  Matlab
关注(0)|答案(4)|浏览(208)

Python和Matlab通常使用整数日期表示,如下所示:

733828.0
733829.0
733832.0
733833.0
733834.0
733835.0
733836.0
733839.0
733840.0
733841.0

这些数字与今年的一些日期相对应。你知道哪个函数可以将它们转换回YYYYMMDD格式吗?

jk9hmnmh

jk9hmnmh1#

datetime.datetime类可以在这里帮助你。如果这些值被视为整数天(您没有指定它们是什么),则以下方法有效。

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

你将值显示为浮点数,而上面的代码不接受浮点数。如果你能给予更多关于数据是什么(以及它来自哪里)的细节,那么就有可能给予一个更完整的答案。

62lalag4

62lalag42#

由于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年的长度。

u2nhd7ah

u2nhd7ah3#

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

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

PS

我认为彼得汉森是对的:)
我的母语不是英语。只是想帮忙我不太清楚时间戳和序号之间的区别:(

de90aj5v

de90aj5v4#

像733828.0这样的日期是Rata Die日期,从公元1年1月1日开始计算。(和天数的小数部分)。它们可能是UTC或您的时区。
儒略历主要被天文学家使用,计算自公元前4713年1月1日格林威治中午以来的天数(以及天数的小数部分)。儒略日期经常与序数日期混淆,序数日期是从当年1月1日开始的日期计数(2月2日=序数日33)。
所以datetime将这些东西称为序数日期,但我认为这只在python的世界中有意义。

相关问题