Есть ли какая-то функция timetostr
в php, которая будет выводить today/tomorrow/next sunday/etc.
от заданной отметки времени? Итак, timetostr(strtotime(x))=x
Это может быть полезно для людей, приезжающих сюда.
/** * 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); } }
Не может быть функция strtotime
reverse, потому что это не биекция. strtotime
строка, с которой вы получаете strtotime
метку UNIX при использовании strtotime
может быть отформатирована различными способами. Итак, если вы решите изменить функцию, как узнать, какой формат строки использовать? Это может быть 2010-08-05 или 10 сентября 2000 года и т. Д. Именно поэтому нет обратной функции, но, как справедливо сказал Andypandy, вам нужно использовать date()
которая позволяет вам фактически определить формат строки, который вы хотите в конечном итоге. Я знаю, что этот вопрос старый, но я подумал, что он заслужил этот ответ, поэтому другие пользователи понимают, почему в PHP нет такой функции.