我正在尝试使用roo gem在ruby脚本中解析XLSX文件。
在Excel中,日期以DDD.ttttt的格式存储为浮点数或整数,从1900-01-00(不是01)
开始计数。因此,要转换一个日期,比如40396,你需要取1900-01-00+ 40396
,你应该得到2010-10-15,但我得到的是2010-08-08。
我正在使用active_support/time进行计算,例如:
Time.new("1900-01-01") + 40396.days
我是在 Windows 7 上运行 ruby 1.9.3-mri 和最新的 active_support gem (3.2.1),我的计算是否有误或者 active support 存在 bug?
编辑:
我是在 Excel 中查看错误的旧文件 - 我的脚本/控制台正在提取正确的数据 - 因此我感到困惑 - 我除了使用正确的文件之外什么都做对了!!!该死的熬夜!
感谢所有回复的人,我将保留这个问题,以便某人需要关于如何使用 ruby 转换 Excel 中的日期的信息。
另外,对于其他遇到此问题的人来说 - spreadsheet gem 目前不支持正确读取 XLSX 文件(v0.7.1),因此我正在使用 roo 进行读取,并使用 axlsx 进行写入。