Определение времени до еженедельного события

Samail
На сайте с 10.05.2007
Offline
361
322

Нужно получить время в секундах до следующего события, которое происходит каждый четверг в 23:55

$ost =(strtotime("next Thursday 23 hours 55 minutes 00 seconds") - time());

так работает правильно только если сегодня не четверг, иначе считает до следующего четверга

Сделал так:


$day = 'Thursday';
$hours = '23';
$minutes = '55';
if(date("l")==$day and date("Hi" )< $hours.$minutes){$next='';}else{$next='next ';}
$ost =(strtotime($next.$day." ".$hours." hours ".$minutes." minutes 00 seconds") - time());

Но наверное есть какая-то уже готовая функция, просто я её не знаю?

tommy-gung
На сайте с 22.11.2006
Offline
287
#1

если сегодня не четверг и время больше 23:55 - посчитать по первому выражению

иначе посчитать оставшиеся секунды дня до 23:55

Здесь не могла быть ваша реклама
Samail
На сайте с 10.05.2007
Offline
361
#2
tommy-gung:
если сегодня не четверг и время больше 23:55 - посчитать по первому выражению

Наверное имелось ввиду "или больше 23:55"?

if(date("l")==$day and date("Hi" )< $hours.$minutes){$next='';}else{$next='next ';}

Это в принципе то-же самое и означает.

W
На сайте с 18.09.2006
Offline
86
#3

Еще можно сделать вот так


print getNextAction(4, 23, 55);

/**
* $weekDay - Порядковый номер дня недели - От 0 (воскресенье) до 6 (суббота)
*/
function getNextAction($weekDay, $hour, $minutes)
{
$daysTo = (7 - date('w') + $weekDay) % 7;
if($daysTo == 0 && date("Hi") >= $hours.$minutes){
$daysTo = 7;
}
$time_next_action = mktime($hour, $minutes, 0, date('m'), date('d') + $daysTo, date('Y'));

# debug
# print date('c', $time_next_action)."\n";

return $time_next_action - time();
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий