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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: пример 17.08.2011 => 40772
DlTA
Отправлено: 18 Августа, 2011 - 01:59:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




разбираюсь с экселевским файлом, нужно сгенерить 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 год)))

(Отредактировано автором: 18 Августа, 2011 - 17:12:30)

 
 Top
DlTA
Отправлено: 18 Августа, 2011 - 17:41:34
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




теперь о багах и нюансах:
если нужно получить для сегодняшней даты то лучше использовать не time() а mktime(0,0,0)
по непонятным пока мне причинам вечером почему то +1 день
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB