Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как преобразовать дату в число (для вин оффиса) по типу mktime
Форумы портала PHP.SU » » Вопросы новичков » как преобразовать дату в число (для вин оффиса) по типу mktime

Страниц (1): [1]
 

1. DlTA - 18 Августа, 2011 - 01:59:24 - перейти к сообщению
разбираюсь с экселевским файлом, нужно сгенерить html чтоб открылась в экселе.
поле дата в екслее имеет типа дубликат,
пример: <td class=xl75 align=right x:num="40772">17.08.2011</td>
тоесть дата вставляется в ячейку "17.08.2011", а вот свойство x:num имеет значение 40772
так вот как получить это значение для любой даты???
(Добавление)
отвечаю на свой же вопрос
PHP:
скопировать код в буфер обмена
  1. floor((mktime(0,0,0,8,17,2011)-946591200)/86400+36525);// =40772


теперь для тех кого интересуют подробности:
36525 - количество дней прошедшее с 1/01/1900 по 31/12/1999 включительно
1/01/1900 - дата начала отсчета в экселе (по умолчанию)
946591200 - 31/12/1999 в юникс формате
86400 - количество секунд в одном дне
тоесть получили метку нужной даты, отняв от полученного 31/12/1999 дату
получаем разницу в секундах,
получанные секунды делим получая дни
и уже к полученным дням прибавляем количество дней с 1/01/1900
все это дело округляем к меньшему, получив тем самым количество дней от заданной даты до 1/01/1900 (при условии что дата за 2000 год)))
2. DlTA - 18 Августа, 2011 - 17:41:34 - перейти к сообщению
теперь о багах и нюансах:
если нужно получить для сегодняшней даты то лучше использовать не time() а mktime(0,0,0)
по непонятным пока мне причинам вечером почему то +1 день

 

Powered by ExBB FM 1.0 RC1