Изменение формата вывода времени при вычислении даты php

#php #unix #timestamp

#php #unix #временная метка

Вопрос:

Хорошо, я не программист, мне нужно немного подправить php в строке кода, и я потратил много часов, пытаясь выяснить, как это сделать. Есть много руководств по формату времени в php, но я не могу найти ответ на мою потребность.

У меня есть эта строка кода в приложении:

 <span class="muted">Expires in <?=(now() > $l->list_expires) ? 'Closed' : timespan(now(),$l->list_expires)?></span>
  

Я обнаружил, что ‘list_expires’ — это столбец mysql с датой времени unix в будущем, то есть 1479350850.
Код вычисляет время с настоящего момента до будущей даты и выводит результат следующим образом:
Coija.com Истекает через 4 недели, 1 день, 21 час 30 минут

Я хочу, чтобы результат отображался короче, например, «Истекает через 29 дней», а если он меньше одного дня, «Истекает через 13 часов» или «Истекает через 10 минут». Другим вариантом было бы ‘осталось 29 дней’.

Я знаю, что первая часть проверяет, истекло ли время, и выводит «закрыто», но прямо сейчас, если оно закрыто, вывод: «Истек в закрытом». Как я могу не показывать ‘Expired’, если должно быть показано ‘closed’?

Буду признателен за любую помощь. Спасибо

Комментарии:

1. If (expired) { don't show closed }

Ответ №1:

Извините, я обнаружил, что ‘timespan’ здесь — это не команда php, а функция в скрипте. Прямо сейчас я начинаю играть с этим, чтобы увидеть результаты.

Спасибо за ваше терпение.

Ответ №2:

Вот пример функции timespan:

 function timespan ($current_time, $list_expires) {
    /** The formatted time span */
    $formatted_timespan = "";
    /** The difference between the current time and list expires */
    $time_difference = ($current_time - $list_expires);
    /** If the time difference is greater than 1 day */
    if ($time_difference > (3600*24)) {
        /** The number of days */
        $day_count          = floor($time_difference / (3600*24));
        $formatted_timespan = "Expires in " . $day_count . " days";
    }
    /** If the time difference is less than 1 day but larger than 1 hour */
    else ($time_difference < (3600*24) amp;amp; $time_difference > (3600)) {
        /** The number of hours */
        $hour_count         = floor($time_difference / (3600));
        $formatted_timespan = "Expires in " . $hour_count . " hours";
    }
    /** If the time difference is less than 1 hour */
    else ($time_difference < (3600)) {
        /** The number of minutes */
        $minute_count       = floor($time_difference / (60));
        $formatted_timespan = "Expires in " . $minute_count . " minutes";
    }
    return $formatted_timespan;
}