Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015 Откуда: Тамбов
Помог: 17 раз(а)
Пишу конвертер XLSX (Excel). Всё вроде понятно, но столкнулся с такой бедой. Excel хранит дату в каком-то своём умном формате. Насколько я понял из доков
Цитата:
Датам от 01.01.1900 до 31.12.9999 в EXCEL сопоставлены целые положительные числа от 1 до 2958465
Вроде всё понятно, я имею число 42095 которое соответствует 01.04.2015. Это я так понимаю столько дней прошло с 01.01.1900. Теперь нужно прибавить это количество дней..
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
GoDr, вычитайте 2, потому что excel знает про 29/02/1900, а php (по крайней мере, без дополнительных настроек) - нет
GoDr
Отправлено: 01 Апреля, 2015 - 16:41:08
Посетитель
Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015 Откуда: Тамбов
Помог: 17 раз(а)
Sail, т.е. ты хочешь сказать что PHP не знает только один високосный год за 115 лет ? Что просто отнять два это понятно, но хочется знать причину.. а то получится, залью на какой-нибудь буржуйский сервер, а там PHP всё умеет
This is by design; this error has been present in all versions of Excel for Windows.
When Microsoft introduced Excel for Windows in 1987, Lotus 1-2-3 was the dominant spreadsheet program, and Lotus 1-2-3 counted 1900 as a leap year. To win over Lotus customers, Excel had to be 100% compatible with it, so the developers deliberately built this error into Excel too.
Once Excel had become the major spreadsheet program, there were so many workbooks in use that removing the error would break many existing spreadsheets, so it was left, and it's unlikely that it will be removed.
GoDr
Отправлено: 01 Апреля, 2015 - 17:04:41
Посетитель
Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015 Откуда: Тамбов
Помог: 17 раз(а)
Вот уроды... а тут думай и гадай.. Надеюсь что свою хрень они исправлять не будут
Sail, спасибо большое. Не нашёл это в Интернете ... +1
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.