LabVIEW读取excel日期 | Excel数据表格中有日期列和时间列,如下表所示:
通过LabVIEW直接读取Excel表格数据,读出的日期列和时间列数据与原始表格不一致,直接读出来的数据如下表所示:
日期、时间列数据异常
问题产生原因
该问题产生的原因:
1)默认情况下,Microsoft Excel for Windows 使用的是 1900日期系统,这表示第一个日期为 1900年1月1日。
注意: Excel 会将日期存储为连续序列号,以便能在计算中使用它们。1900 年1月1日的序列号为 1,2008 年1月1日的序列号为 39448,这是因为它与1900年1月1日之间相差 39,447 天,可以更改数字格式(设置单元格格式)以显示正确的日期。
2)而LabVIEW中可以以秒数来表述日期和时间,即表示自1904年1月1日12:00 am (通用时间[1904-01-01 00:00:00]) 以来无时区影响的秒数。
正因为Excel和LabVIEW在表述日期和时间上的差异,导致了LabVIEW直接读取Excel表格中的日期和时间列时的数据显示异常。
解决方案
知晓了原因后,就可以通过换算获得正确的日期和时间数据,步骤如下:
1)LabVIEW直接读取Excel数据,获得的是自1900 年1月1日以来以天为单位的日期和时间数据;
2)因LabVIEW日期起始时间为1904-01-01 00:00:00(无时区),相隔4年,因此将读取到的Excel日期和时间数据-1462(1900~1904这4年换算为天数),获得真实的以天数为单位的自1900年1月1日以来的日期和时间。
3)因LabVIEW是以秒数来存储日期和时间的,因此需要将第2步得到的天数换算为秒数,即天数*86400(60*60*24);
4)又因中国位于东8区,因此还得在无时区秒数描述的日期时间数据上-28800(60*60*8),得到东8区所在时刻的以秒数为单位的日期时间数据;
5)再通过“转换为时间标识”函数,将显示样式转换为时间标识。
LabVIEW代码实现