Попытка разобрать файл XLSX с помощью roo gem в скрипте ruby.
В Excel даты хранятся как числа с плавающей запятой или целые числа в формате DDDDD.ttttt, считая от 1900-01-00 (00 no 01)
. Таким образом, чтобы преобразовать дату, такую как 40396, вы должны взять 1900-01-00 + 40396
, и вы должны получить 2010-10-15, но я получаю 2010-08-08.
Я использую active_support/time для выполнения вычислений следующим образом:
Time.new("1900-01-01") + 40396.days
Я делаю вычисления неправильно или в активной поддержке есть ошибка?
Я запускаю ruby 1.9.3-mri на Windows 7 + последний гем active_support (3.2.1)
РЕДАКТИРОВАТЬ
Я просматривал старый файл в Excel с неправильными данными - мой скрипт/консоль вытягивали правильные данные - отсюда и мое замешательство - я все делал правильно, за исключением того, что использовал правильный файл!!!! К черту ночных!
Спасибо всем, кто ответил, я оставлю вопрос здесь на тот случай, если кому-то понадобится информация о том, как преобразовать даты из Excel с помощью ruby.
Также для всех, кто сталкивается с этим: гем электронных таблиц НЕ поддерживает чтение файлов XLSX на данном этапе (v 0.7.1) должным образом, поэтому я использую roo для чтения и axlsx для записи.