Я строю сайт и рассматриваю временные строки, представляющие Эру Человека, с годом 0, начиная с 12019 лет назад.Это означает, что на всех моих метках времени есть дополнительная цифра.(Вот ссылка на видео, объясняющее, почему мы должны это делать: https://www.youtube.com/watch?v=FaB41TtgS54)
Я думаю, будет лучше, если после первых 1 или 2 цифр будет запятая.
Я сам что-то написал, но в нем больше строк кода, чем хотелось бы, и сейчас у меня нет времени сосредоточиться на рефакторинге.Я бы хотел, так как это важно, но я держу пари, что кто-то с более высоким уровнем навыка может достичь этого быстрее, чем я.
Вот моя текущая функция.Он загружается на каждую страницу много раз.
// Uses Wordpress post dates
$post->date_posted = get_human_year($post->post_date);
function get_human_year($date) {
$a = new \DateTime($date);
$b = new \DateTime;
$days_ago = $a->diff($b)->days; // => 1
if($days_ago == 0){
$date_str = "today";
} else if ($days_ago == 1) {
$date_str = "yesterday";
} else {
$date_str = "{$days_ago} days ago";
}
$string = date('M d, Y', strtotime($date .' + 10000 years')) . " ({$date_str})";
$pattern = '/[0-9]{4,5}/i';
if (preg_match($pattern, $string, $match)) {
$year = (int)$match[0];
$hyear = number_format($year, 0, '.', ',');
return(str_replace($year, $hyear, $string));
} else {
return "";
}
}
Таким образом, приведенный выше код выводит что-то вроде
25 августа, 12 019 (29 дней назад)
Функциональность (x дней назад) в конечном итоге будет содержать больше дней
Предполагая, что в конечном итоге это приведет к успешному продукту, работающему в масштабе, он представляет собой значительное изменение в анализе времени.Я хотел бы видеть это более производительным и оцененным в большом количестве.(Я бы использовал кэширование для хранения значений для определенного поста после его получения)
Спасибо за вашу помощь или за предоставленную информацию.