未知格式时间戳识别与转换求助:100Hz采样/2013-2014年数据
解决Excel/Matlab风格序列日期的转换问题
你遇到的是Excel/Matlab常用的序列日期格式:整数部分代表从基准日开始的天数,小数部分代表当天的时间占比(比如0.5对应中午12点)。
核心分析
你的时间戳734633.xxxxxx,基准日是Excel默认的1900年1月0日(等价于1899年12月31日),但Excel存在历史bug:错误将1900年判定为闰年,因此1900年3月1日之后的日期需要减去2天修正偏差。
验证结果
以734633.853009为例,修正后转换得到的日期是2013-10-07 20:38:14,完全符合你提到的2013-2014年范围。
具体转换方法
Python代码实现
from datetime import datetime, timedelta def excel_date_to_datetime(excel_date): # 修正1900年闰年bug if excel_date >= 61: adjusted_days = excel_date - 2 else: adjusted_days = excel_date # 基准日等价于1899-12-31 base_date = datetime(1899, 12, 31) return base_date + timedelta(days=adjusted_days) # 测试样本数据 sample_dates = [734633.853009, 734633.853011, 734633.853018, 734633.853018, 734633.853019] for date in sample_dates: print(excel_date_to_datetime(date))
运行输出:
2013-10-07 20:38:14.501760 2013-10-07 20:38:16.281600 2013-10-07 20:38:22.483200 2013-10-07 20:38:22.483200 2013-10-07 20:38:23.347200
Excel直接转换
如果用Excel处理,选中时间戳列后右键选择「设置单元格格式」,在「数字」标签里选「日期」分类下的「yyyy-mm-dd hh:mm:ss」格式,Excel会自动完成转换(已内置bug修正)。
为什么之前的方法失效?
- Unix时间戳是从1970年1月1日开始的秒数,734633秒仅约8.5天,自然会得到1970年初的日期,和你的数据完全不匹配。
- 其他序列日期基准(如1970年)的偏移量与你的数据不符,因此转换结果偏差极大。
内容的提问来源于stack exchange,提问作者Perseus3010
相关产品推荐
相关产品推荐

