Как преобразовать дату MS Excel из формата с плавающей запятой в формат даты в Ruby?

Попытка разобрать файл 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 для записи.

9
задан konung 14 May 2012 в 21:57
поделиться