Python和Matlab通常使用整数日期表示,如下所示:
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
这些数字与今年的一些日期相对应。你知道哪个函数可以将它们转换回YYYYMMDD格式吗?
jk9hmnmh1#
datetime.datetime类可以在这里帮助你。如果这些值被视为整数天(您没有指定它们是什么),则以下方法有效。
datetime.datetime
>>> from datetime import datetime >>> dt = datetime.fromordinal(733828) >>> dt datetime.datetime(2010, 2, 25, 0, 0) >>> dt.strftime('%Y%m%d') '20100225'
你将值显示为浮点数,而上面的代码不接受浮点数。如果你能给予更多关于数据是什么(以及它来自哪里)的细节,那么就有可能给予一个更完整的答案。
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年的长度。
datenum('Jan-1-0000 00:00:00')
datetime.date.fromordinal
u2nhd7ah3#
733828.0是时间戳吗?如果是这样,您可以执行以下操作:
import datetime as dt dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')
我认为彼得汉森是对的:)我的母语不是英语。只是想帮忙我不太清楚时间戳和序号之间的区别:(
de90aj5v4#
像733828.0这样的日期是Rata Die日期,从公元1年1月1日开始计算。(和天数的小数部分)。它们可能是UTC或您的时区。儒略历主要被天文学家使用,计算自公元前4713年1月1日格林威治中午以来的天数(以及天数的小数部分)。儒略日期经常与序数日期混淆,序数日期是从当年1月1日开始的日期计数(2月2日=序数日33)。所以datetime将这些东西称为序数日期,但我认为这只在python的世界中有意义。
4条答案
按热度按时间jk9hmnmh1#
datetime.datetime
类可以在这里帮助你。如果这些值被视为整数天(您没有指定它们是什么),则以下方法有效。你将值显示为浮点数,而上面的代码不接受浮点数。如果你能给予更多关于数据是什么(以及它来自哪里)的细节,那么就有可能给予一个更完整的答案。
62lalag42#
由于Python示例已经演示过,这里是matlab示例:
另外,请注意,虽然看起来很相似,但在Matlab和Python中实际上是不同的:
MATLAB
序列日期数字表示从特定日期和时间开始的天数的整数和小数,其中
datenum('Jan-1-0000 00:00:00')
返回数字1。(0000年只是一个参考点,并不打算解释为时间上的真实的一年。)Python,
datetime.date.fromordinal
返回对应于预言格里高利序数的日期,其中1年的1月1日的序数为1。
所以它们会相差366天,这显然是0年的长度。
u2nhd7ah3#
733828.0是时间戳吗?如果是这样,您可以执行以下操作:
PS
我认为彼得汉森是对的:)
我的母语不是英语。只是想帮忙我不太清楚时间戳和序号之间的区别:(
de90aj5v4#
像733828.0这样的日期是Rata Die日期,从公元1年1月1日开始计算。(和天数的小数部分)。它们可能是UTC或您的时区。
儒略历主要被天文学家使用,计算自公元前4713年1月1日格林威治中午以来的天数(以及天数的小数部分)。儒略日期经常与序数日期混淆,序数日期是从当年1月1日开始的日期计数(2月2日=序数日33)。
所以datetime将这些东西称为序数日期,但我认为这只在python的世界中有意义。