Загадка про даты

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
spy
сержант
Сообщения: 276
Зарегистрирован: 2008-05-21 10:27:31
Откуда: Красноярск

Загадка про даты

Непрочитанное сообщение spy » 2009-08-21 7:27:34

Нужно с помощью PHP обработать файлик, который сделала одна программка:

Код: Выделить всё

<intervals><interval begin="40045" end="40052"/></intervals>
<day id="40047" price0="" price1="" price2="" price3="" price4="" price5="" price6="">
Меня интересует как в begin="40045", end="40052" и id="40047" зашифрованны даты.
begin="40045" - это 20.08.2009
end="40052" - это 26.08.2009
:unknown:
unix# ?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Загадка про даты

Непрочитанное сообщение Alex Keda » 2009-08-21 8:15:23

Код: Выделить всё

begin="40045" - это 20.08.2009
end="40052" - это 26.08.2009
вы уверены? по датам там 6 дней, а по числам 7...
несходитсья
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Загадка про даты

Непрочитанное сообщение terminus » 2009-08-21 11:41:54

Код: Выделить всё

40052 - 40045 = 7
26.08.2009 - 20.08.2009 = 7 (если 20 включительно)
он считает в днях, при этом "эпоха" у него началась 40046 дней назад (команда date -j -v-40046d выдает ошибку - походу дата лежит до 1970. Может это день рождения программиста указан?). :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Загадка про даты

Непрочитанное сообщение paradox » 2009-08-21 12:52:31

блаблабла
сначала было это на одном форуме теперь и лисяре это запостили
может хватит?
обратитесь к разработчику того сайта ))) и нечего гадать

Аватара пользователя
spy
сержант
Сообщения: 276
Зарегистрирован: 2008-05-21 10:27:31
Откуда: Красноярск

Re: Загадка про даты

Непрочитанное сообщение spy » 2009-08-21 13:27:44

Я это постю первый раз в жизни, нужно без разработчиков выяснить это...
Давай без истерик)
говорите по делу.
спасибо
unix# ?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Загадка про даты

Непрочитанное сообщение paradox » 2009-08-21 13:31:54

истерик нет)
просто уже не раз натыкаюсь на форумаъ на эти загадки с датами

Sla
мл. сержант
Сообщения: 73
Зарегистрирован: 2008-08-19 15:09:19

Re: Загадка про даты

Непрочитанное сообщение Sla » 2009-08-21 16:06:33

почему загадки?
MS формат даты
даты считаются от 01/01/1900

Аватара пользователя
spy
сержант
Сообщения: 276
Зарегистрирован: 2008-05-21 10:27:31
Откуда: Красноярск

Re: Загадка про даты

Непрочитанное сообщение spy » 2009-08-21 17:31:36

О по делу))
Гуд) Ковырну , размещу результат
unix# ?

Аватара пользователя
spy
сержант
Сообщения: 276
Зарегистрирован: 2008-05-21 10:27:31
Откуда: Красноярск

Re: Загадка про даты

Непрочитанное сообщение spy » 2009-10-29 6:43:40

Как и обещал :smile:

Перевести к нормальному виду:

Код: Выделить всё

<?php

$excel_date = 40179;

$normal_date = date("m/d/Y", strtotime("01/01/1900 + $excel_date days - 2 days"));

echo($normal_date);

?>
Перевести назад в EXEL, можно с помощью функции:

Код: Выделить всё

function getDays1900($date){
 $stop = unixtojd(strtotime($date));
 $start = gregoriantojd(1, 1, 1900);
 return ($stop - $start + 2);
}

unix# ?