PHP конвертировать дату в формате HTML

Дата публикации возвращается из канала Atom API поиска Twitter как 2008-11-03T21: 30: 06Z, который необходимо преобразовать в «X секунд / минут / часов / дней назад», чтобы показать, как давно были опубликованы сообщения Twitter.

Думаете, это можно сделать с помощью функции php date (), используя значение DATE_ATOM?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
2 711
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

strtotime будет обрабатывать этот формат даты, давая вам временную метку unix. Затем вы можете следовать алгоритмам на Как рассчитать относительное время?, чтобы получить свой результат.

Ответ принят как подходящий
function time_since($your_timestamp) {
    $unix_timestamp = strtotime($your_timestamp);
    $seconds = time() - $unix_timestamp;
    $minutes = 0;
    $hours = 0;
    $days = 0;
    $weeks = 0;
    $months = 0;
    $years = 0;
    if ( $seconds == 0 ) $seconds = 1;
    if ( $seconds> 60 ) {
        $minutes =  $seconds/60;
    } else {
        return add_s($seconds,'second');
    }

    if ( $minutes >= 60 ) {
        $hours = $minutes/60;
    } else {
        return add_s($minutes,'minute');
    }

    if ( $hours >= 24) {
        $days = $hours/24;
    } else {
        return add_s($hours,'hour');
    }

    if ( $days >= 7 ) {
        $weeks = $days/7;
    } else {
        return add_s($days,'day');
    }

    if ( $weeks >= 4 ) {
        $months = $weeks/4;
    } else {
        return add_s($weeks,'week');
    }

    if ( $months>= 12 ) {
        $years = $months/12;
        return add_s($years,'year');
    } else {
        return add_s($months,'month');
    }

}

function add_s($num,$word) {
    $num = floor($num);
    if ( $num == 1 ) {
        return $num.' '.$word.' ago';
    } else {
        return $num.' '.$word.'s ago';
    }
}

echo time_since('2008-11-03T21:30:06Z');

Спасибо, Джек. Все, что мне было нужно, объединено в пару функций. Ваше здоровье!

Kev 04.11.2008 01:53

Это легко сделать с помощью функциональности DateTime, представленной в PHP 5.2:

$posted   = new DateTime('2008-11-03T21:30:06Z');
$now      = new DateTime();
$interval = $posted->diff($now);
echo $interval->format('%a days'); // You can change this to be whatever format you like

Пример

Другие вопросы по теме