如何将Excel中DD/MM/YYYY格式日期提取至Scilab并正确解析
Scilab读取Excel日期格式问题解决方案
问题根源
Excel的日期以序列号存储,基准是1899年12月31日(等价于1900年1月0日),而Scilab的datevec()默认以1970年1月1日(Unix时间戳基准)解析数值,直接解析Excel序列号会导致结果完全错误。
解决方案步骤
转换Excel日期序列号到Scilab兼容基准
Excel中1970年1月1日对应的序列号是25569,只需将读取到的Excel日期数值减去25569,即可得到Scilab可识别的天数:excel_date = 44155; // 从Excel读取的日期值 scilab_days = excel_date - 25569;用
datevec()正确解析
调用datevec()时指定单位为"day",确保按天数解析转换后的值:date_parts = datevec(scilab_days, "day"); // 输出结果:[2020, 11, 20, 0, 0, 0],对应原Excel的20/11/2020批量处理整列数据
如果读取的是整列日期数据,直接对数组做批量运算即可:// 假设excel_dates是从Excel读取的日期序列号数组 scilab_days = excel_dates - 25569; all_date_parts = datevec(scilab_days, "day");验证转换结果
可以用datestr()将解析后的日期转回字符串格式,确认与原Excel日期一致:formatted_date = datestr(date_parts, "dd/mm/yyyy"); // 输出:"20/11/2020"
内容的提问来源于stack exchange,提问作者Pendr3gon
相关产品推荐
相关产品推荐

