Время до указанного часа

319
10 декабря 2016, 10:51

Нужно посчитать время до ближайшего нужного часа, период - каждые 6 часов, это 00, 6, 12, 18. Выдать время до этого часа в секундах. Остановился на самом конце.

function itime() {
//Текущее время
$nt = date('G:i:s', time());
list($hour, $min, $sec) = explode(':', $nt);
//Узнаём ближайший час
if ($hour >= 0 && $hour < 6) { $wayth = 6; }
if ($hour >= 6 && $hour < 12) { $wayth = 12; }
if ($hour >= 12 && $hour < 18) { $wayth = 18; }
if ($hour >= 18 && $hour < 0) { $wayth = 0; }
//Считаем время до этого часа
}
echo itime();
Answer 1
function itime() {
    //Текущее время
    $currentTime = time();
    $nt = date('Y:m:d:G:i:s:', $currentTime);
    list($year,$month,$day, $hour, $min, $sec) = explode(':', $nt);
    //Узнаём ближайший час
    if ($hour >= 0 && $hour < 6) { $wayth = 6; }
    if ($hour >= 6 && $hour < 12) { $wayth = 12; }
    if ($hour >= 12 && $hour < 18) { $wayth = 18; }
    if ($hour >= 18 && $hour <= 23){
        // новый день
        $day += 1;
        //проверяем месяца по 31 дню
        if ($day == 32){
            $month += 1;
            //проверяем декабрь
            if ($month == 12){
                $year += 1;
            }
        }
        //проверяем месяца по 30 дней
        elseif ($day == 31 ){
            $monthList = array(4,6,9,11);
            if (in_array($month, $monthList)){
                $month += 1;
            }
        }
        //проверяем високосный февраль
        elseif ($day == 30 && $year%4 == 0 && $month == 2){
            $month += 1;
        }
        //проверяем просто февраль
        elseif ($day == 29 && $month == 2){
            $month += 1;
        }
        $wayth = 0;
    }
    $targetTime = mktime($wayth,0,0,$month,$day,$year);
    //Считаем время до этого часа
    $result = $targetTime - $currentTime ;
    return $result;
}
echo itime();
Answer 2
function itime() {
   $period = 60*60*6;
   $periods = floor(date('U')/$period);
   $left = date('U') - $periods*$period;
   return $left;
}
echo itime();
Answer 3

так вы не понимаете а оскорблять не стоит всё просто

if (time() >= strtotime('24 hours') && $hour < strtotime('6 hours')) { 
   $result = strtotime('6 hours') - time();
}

учите php.

READ ALSO
Ошибка “Fatal error: Class &#39;…&#39; not found” в phpUnit

Ошибка “Fatal error: Class '…' not found” в phpUnit

тестируемый класс, лежит в app\web:

451
Добавление записи в БД через форму [закрыто]

Добавление записи в БД через форму [закрыто]

Вношу данные в БД через форму в отдельном файле и методом POST отправляю ихНо почему-то данные в бд не появляются,что неправильно делаю? Помогите...

357
ajax передача файла в php

ajax передача файла в php

Как передать файл из input type=file при помощи ajax или post методом POST файл в файл phpне могу толкового ничего найти и сделать

352