Страница 1 из 1

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

Добавлено: 2009-08-21 7:27:34
spy
Нужно с помощью 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:

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

Добавлено: 2009-08-21 8:15:23
Alex Keda

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

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

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

Добавлено: 2009-08-21 11:41:54
terminus

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

40052 - 40045 = 7
26.08.2009 - 20.08.2009 = 7 (если 20 включительно)
он считает в днях, при этом "эпоха" у него началась 40046 дней назад (команда date -j -v-40046d выдает ошибку - походу дата лежит до 1970. Может это день рождения программиста указан?). :smile:

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

Добавлено: 2009-08-21 12:52:31
paradox
блаблабла
сначала было это на одном форуме теперь и лисяре это запостили
может хватит?
обратитесь к разработчику того сайта ))) и нечего гадать

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

Добавлено: 2009-08-21 13:27:44
spy
Я это постю первый раз в жизни, нужно без разработчиков выяснить это...
Давай без истерик)
говорите по делу.
спасибо

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

Добавлено: 2009-08-21 13:31:54
paradox
истерик нет)
просто уже не раз натыкаюсь на форумаъ на эти загадки с датами

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

Добавлено: 2009-08-21 16:06:33
Sla
почему загадки?
MS формат даты
даты считаются от 01/01/1900

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

Добавлено: 2009-08-21 17:31:36
spy
О по делу))
Гуд) Ковырну , размещу результат

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

Добавлено: 2009-10-29 6:43:40
spy
Как и обещал :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);
}