Есть ли в php функция timetostr
, которая будет выводить today/tomorrow/next sunday/etc.
с заданной меткой времени? Так что timetostr(strtotime(x))=x
php strtotime обратный
Ответы (2)
Это может быть полезно для людей, приезжающих сюда.
/**
* 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);
}
}
list($singular, $plural, $factor) = $scale;
внутри foreach и заменив список в колясках foreach на $list
- person hozza; 11.09.2014
Не может быть strtotime
обратной функции, потому что это не биекция. Исходная строка, из которой вы получаете метку времени UNIX при использовании strtotime
, может быть отформатирована множеством различных способов. Итак, если вы решите отменить функцию, как узнать, какой строковый формат использовать? Это вполне может быть 05.08.2010 или 10 сентября 2000 и т. Д. Именно поэтому обратной функции нет, но, как правильно сказал Andypandy, вы должны использовать date()
, который позволяет вам фактически определять формат строки, который вы хотите в конечном итоге с участием. Я знаю, что это старый вопрос, но я подумал, что он заслуживает этого ответа, чтобы другие пользователи понимали, почему в PHP нет такой функции.
date()
. Я хотел спросить, есть ли прямая функция, которая будет делать обратноеstrtotime
? - person prongs   schedule 25.12.2011($timestamp-strtodate('today'))/86400
. Мне просто было интересно, была ли уже встроена функция в php. - person prongs   schedule 25.12.2011