Редактор темы

Реклама
Реклама

Переводим час:мин:сек в секунды и в iso 8601 формат времени для микроразметки фильмов

foxrus
не самый лучший вариант, но рабочий:
PHP:
$myxfields = $row['xfields'];
$myxfdata = xfieldsdataload( $myxfields );
$duration=strip_tags($myxfdata['time']);
$search_duration="мин.";
if (strstr($duration, $search_duration)) {
$duration = explode(" мин.", strip_tags($myxfdata['time']));
$tpl->set('{duration}', $duration[0]*60);
} else {
list($hours, $mins, $secs) = explode(':', $duration);
$duration=($hours * 3600 ) + ($mins * 60 ) + $secs;
$tpl->set('{duration}', $duration);
}
time - это название доп поля.

может кодеры предложат более компактный вариант.
 
foxrus
не самый лучший вариант, но рабочий:
PHP:
$myxfields = $row['xfields'];
$myxfdata = xfieldsdataload( $myxfields );
$duration=strip_tags($myxfdata['time']);
$search_duration="мин.";
if (strstr($duration, $search_duration)) {
$duration = explode(" мин.", strip_tags($myxfdata['time']));
$tpl->set('{duration}', $duration[0]*60);
} else {
list($hours, $mins, $secs) = explode(':', $duration);
$duration=($hours * 3600 ) + ($mins * 60 ) + $secs;
$tpl->set('{duration}', $duration);
}
time - это название доп поля.

может кодеры предложат более компактный вариант.


Спасибо. Я так понял {duration} вставлять вместо {seotime} - <meta itemprop="duration" content="{seotime}"/>
 
И еще вопрос - А как же PT...S?
 
Спасибо. Я так понял {duration} вставлять вместо {seotime} - <meta itemprop="duration" content="{seotime}"/>
да. {duration} - будет выводиться в секундах. если {seotime}, то можно использовать мой вариант.
И еще вопрос - А как же PT...S?
логично же, что у нас есть секунды - это {duration} в шаблоне полной новости, и как вывести PT*S? Конечно же - PT{duration}S и в гугле не будет ошибок:
2019-01-05_11-49-34.png
 
да. {duration} - будет выводиться в секундах. если {seotime}, то можно использовать мой вариант.

логично же, что у нас есть секунды - это {duration} в шаблоне полной новости, и как вывести PT*S? Конечно же - PT{duration}S и в гугле не будет ошибок:
Посмотреть вложение 18796

Круто, ошибка пропала, спасибо большое.
 
foxrus
не самый лучший вариант, но рабочий:
PHP:
$myxfields = $row['xfields'];
$myxfdata = xfieldsdataload( $myxfields );
$duration=strip_tags($myxfdata['time']);
$search_duration="мин.";
if (strstr($duration, $search_duration)) {
$duration = explode(" мин.", strip_tags($myxfdata['time']));
$tpl->set('{duration}', $duration[0]*60);
} else {
list($hours, $mins, $secs) = explode(':', $duration);
$duration=($hours * 3600 ) + ($mins * 60 ) + $secs;
$tpl->set('{duration}', $duration);
}
time - это название доп поля.

может кодеры предложат более компактный вариант.

byroot Скажи пожалуйста как обработать 2 часа 20 минут тоесть нужно убрать и "часа" и "минут"????

Вариант tyz75 выводит ~
 
Последнее редактирование:
А если часа нет то как отображается ?
~ 42 минуты

Может кто то может написать мини парсер что бы переписать доп. поле с временем ??? Разумеется отблагодарю !

Всё это вставляет "Parser Kino Poisk"

Capture.JPG
 
Последнее редактирование:
~ 42 минуты

Может кто то может написать мини парсер что бы переписать доп. поле с временем ??? Разумеется отблагодарю !

Сейчас попробую =) Только что просто сделал себе то что надо. По такому же принципу.
 
~ 42 минуты

Может кто то может написать мини парсер что бы переписать доп. поле с временем ??? Разумеется отблагодарю !

Всё это вставляет "Parser Kino Poisk"

Посмотреть вложение 18971
Получается с вариантом 2 часа 20 минут, а вот если ~ 42 минуты или 1 час 30 минут то засада. Попробую поковырять еще.
 
Получается с вариантом 2 часа 20 минут, а вот если ~ 42 минуты или 1 час 30 минут то засада. Попробую поковырять еще.

Может есть парсер которым обновить время что бы получилось: 182 мин. ??? Можно было или с MW или КП...
 
foxrus
может кодеры предложат более компактный вариант.

Код:
$time = explode(" мин", $xfieldsdata['ДОП_ПОЛЕ']);
        $seconds = $time[0]*60;
        $duration = date("H:i:s", mktime(0, 0, $seconds));
        $seotime = 'PT'.$seconds.'S';
        $tpl->set( '{seconds}', $seconds ); 
        $tpl->set( '{duration}', $duration );
        $tpl->set( '{seotime}', $seotime );

В доп поле к примеру 92 мин. , вывод возможен: {seconds} - 5520, {duration} - 01:32:00, {seotime} - PT5520S
 
Код:
$time = explode(" мин", $xfieldsdata['ДОП_ПОЛЕ']);
        $seconds = $time[0]*60;
        $duration = date("H:i:s", mktime(0, 0, $seconds));
        $seotime = 'PT'.$seconds.'S';
        $tpl->set( '{seconds}', $seconds );
        $tpl->set( '{duration}', $duration );
        $tpl->set( '{seotime}', $seotime );

В доп поле к примеру 92 мин. , вывод возможен: {seconds} - 5520, {duration} - 01:32:00, {seotime} - PT5520S

Спасибо! осталось найти кодера который напишет парсер что бы спарсить заново время... и в формате 92 мин.
 
какие теги нужны?
Насколько я понял у него разного рода значения (с разными окончаниями) в данный момент, к примеру ~ 42 минуты, 2 часа 20 минут, 1 час 33 минуты, ему надо всё привести к виду 92 мин.
 
Продолжительность: 92 мин.
PHP:
if (strpos($xfieldsdata['ДОП_ПОЛЕ'], 'час') !== FALSE) {
    $time = explode(' ', $xfieldsdata['ДОП_ПОЛЕ']);
    $seconds = intval($time[0]) * 3600;
    $minute = (intval($time[0]) * 60) + intval($time[2]);
} elseif (strpos($xfieldsdata['ДОП_ПОЛЕ'], 'минут') !== FALSE) {
    $time = explode(' ', $xfieldsdata['ДОП_ПОЛЕ']);
    $seconds = intval($time[1]) * 60;
    $minute = intval($time[1]);
}
if ($seconds) {
    $tpl->set('{seconds}', $seconds);
    $tpl->set('{duration}', $minute . ' мин.');
    $tpl->set('{seotime}', 'PT' . $seconds . 'S');
}

{seconds} - выведет продолжительность фильма / сериала в секундах (7200)
{duration} - выведет продолжительность фильма / сериала в минутах (92 мин.)
{seotime} - для разметки
 
О, ТС, ты меня реально выручил!
 
PunPun Напишешь пожалуйста парсер что бы заново спарсить время??? Или кто то другой может то сделать ? За $ разумеется ...
 

Похожие темы Последние темы Популярные темы

Назад
Сверху