Я пытаюсь создать функцию, которая берет метку времени и генерирует «относительную» строковую дату, возможно, обратное strtotime!
Yesterday at 2pm
Yesterday at 3:15pm
Earlier Today at 9am
Today at 12pm
Today at 12:45pm
Tomorrow at 5pm
Monday at 9pm
Sunday at 12:55am
All dates older than a week:
Thu 7th Jul
В настоящее время у меня есть приведенный ниже код, и мне было интересно, как улучшитьЭто?Это не кажется очень эффективным и отсутствует некоторые функции.Что бы вы добавили?
static public function timestampRelativeString($timestamp, $rounding=900) {
if(!self::isValidTimeStamp($timestamp))
return "Invalid Timestamp";
//Round to (default) 15 mins
$timestamp = floor($timestamp/$rounding)*$rounding;
//Today
if($timestamp<mktime(0, 0, 0, date("m"), date("d")-1, date("y")))
return date("D jS M", $timestamp);
elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")-1, date("y")))
return "Today at ".date("G:i", $timestamp);
elseif($timestamp<time()))
return "Earlier today at ".date("G:i", $timestamp);
elseif($timestamp<mktime(23, 59, 59, date("m"), date("d"), date("y")))
return "Today at ".date("G:i", $timestamp);
elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")+1, date("y"))) //Tomorrow
return "Tomorrow at ".date("G:i", $timestamp);
elseif($timestamp<mktime(23, 59, 59, date("m"), date("d")+7, date("y"))) //Next Week
return "On ".date("l", $timestamp)." at ".date("G:i", $timestamp);
else
return date("D jS M", $timestamp);
}
Кто-нибудь знает сценарий, который уже делает это?Или очень похоже?
Большое спасибо за ваше время,