php strtotime обратный - PullRequest
       6

php strtotime обратный

6 голосов
/ 25 декабря 2011

Есть ли в php какая-то функция timetostr, которая будет выводить today/tomorrow/next sunday/etc. из заданной отметки времени?Так что timetostr(strtotime(x))=x

Ответы [ 2 ]

10 голосов
/ 10 ноября 2013

Это может быть полезно для людей, приезжающих сюда.

/**
 * Format a timestamp to display its age (5 days ago, in 3 days, etc.).
 *
 * @param   int     $timestamp
 * @param   int     $now
 * @return  string
 */
function timetostr($timestamp, $now = null) {
    $age = ($now ?: time()) - $timestamp;
    $future = ($age < 0);
    $age = abs($age);

    $age = (int)($age / 60);        // minutes ago
    if ($age == 0) return $future ? "momentarily" : "just now";

    $scales = [
        ["minute", "minutes", 60],
        ["hour", "hours", 24],
        ["day", "days", 7],
        ["week", "weeks", 4.348214286],     // average with leap year every 4 years
        ["month", "months", 12],
        ["year", "years", 10],
        ["decade", "decades", 10],
        ["century", "centuries", 1000],
        ["millenium", "millenia", PHP_INT_MAX]
    ];

    foreach ($scales as list($singular, $plural, $factor)) {
        if ($age == 0)
            return $future
                ? "in less than 1 $singular"
                : "less than 1 $singular ago";
        if ($age == 1)
            return $future
                ? "in 1 $singular"
                : "1 $singular ago";
        if ($age < $factor)
            return $future
                ? "in $age $plural"
                : "$age $plural ago";
        $age = (int)($age / $factor);
    }
}
1 голос
/ 28 декабря 2012

Не может быть strtotime обратная функция, потому что это не биекция. Исходная строка, из которой вы получаете метку времени UNIX при использовании strtotime, может быть отформатирована разными способами. Итак, если вы решите изменить функцию, как узнать, какой формат строки использовать? Это может быть 2010-08-05 или 10 сентября 2000 года и т. Д. Именно поэтому нет функции обратного просмотра, но, как справедливо сказал Andypandy, вы должны использовать date(), который позволяет вам на самом деле определить желаемый формат строки в конечном итоге. Я знаю, что этот вопрос старый, но я подумал, что заслужил этот ответ, поэтому другие пользователи понимают, почему в PHP нет такой функции.

...