PHP Найти дату, ближайшую к периоду временной шкалы

Итак, ну, хорошо. Это может стать математическим, так что надеюсь, что вы взяли с собой свой научный калькулятор;)

Это моя проблема:

alt text

Учитывая начальную дату (отметку времени), период времени (секунды) и сегодняшнюю дату (отметку времени), мне нужно найти ближайшую дату который совпадает с периодом * n плюс исходная / начальная дата.

Пока что некоторые вещи работают нормально, например, количество «периодов» между начальной и конечной (сегодняшней) датой, которое будет «2 "в демонстрации выше:

$initial=strtotime('2 April 1991');
$time=time();
$period=strtotime('+10 years',0);

$periods=round(($time-$initial)/$period);

Следующее, что я сделал, было:

$range=$periods*$period;

И, наконец:

echo date('d M Y',$initial+$range);

Который написал« 03 апреля 2011 ». Как добралось до 3? (Я подозреваю, что это проблема високосного года?) Мне нужно найти ближайшую дату, которая совпадает с периодом * n плюс исходная / начальная дата.

Пока что у меня есть некоторые вещи, работающие нормально, например, количество «периодов» между начальной и конечной датой (сегодняшнее) date, которая в приведенном выше демо будет равна «2»:

$initial=strtotime('2 April 1991');
$time=time();
$period=strtotime('+10 years',0);

$periods=round(($time-$initial)/$period);

Следующее, что я сделал, было:

$range=$periods*$period;

И наконец:

echo date('d M Y',$initial+$range);

Что написало «03 апреля 2011». Как добралось до 3? (Я подозреваю, что это проблема високосного года?) Мне нужно найти ближайшую дату, которая совпадает с периодом * n плюс исходная / начальная дата.

Пока что у меня есть некоторые вещи, работающие нормально, например, количество «периодов» между начальной и конечной датой (сегодняшнее) date, которая в приведенном выше демо будет равна «2»:

$initial=strtotime('2 April 1991');
$time=time();
$period=strtotime('+10 years',0);

$periods=round(($time-$initial)/$period);

Следующее, что я сделал, было:

$range=$periods*$period;

И наконец:

echo date('d M Y',$initial+$range);

Что написало «03 апреля 2011». Как добралось до 3? (Я подозреваю, что это проблема високосного года?) Вы знаете это чувство, когда вам не хватает чего-то маленького? Я чувствую это прямо сейчас ....

7
задан Christian 22 December 2010 в 12:23
поделиться