Нужен эффективный способ добавления запятых к годам с 5 цифрами - PullRequest
2 голосов
/ 23 сентября 2019

Я строю сайт и рассматриваю временные строки, представляющие Эру Человека, с годом 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 дней назад) в конечном итоге будет содержать больше дней

Предполагая, что в конечном итоге это приведет к успешному продукту, работающему в масштабе, он представляет собой значительное изменение в анализе времени.Я хотел бы видеть это более производительным и оцененным в большом количестве.(Я бы использовал кэширование для хранения значений для определенного поста после его получения)

Спасибо за вашу помощь или за предоставленную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...