Как я могу получить момент для отображения «вчера», а не «день назад»? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующий код, который используется для нахождения гуманизированной разницы во времени между двумя датами, проблема в том, что я не хочу иметь «день назад», а показываю «вчера».

function humanize(date) {
  const then = moment.utc(date); 
  
  return then.fromNow();
}

function getYesterdayAsISO() {
    var date = new Date();
    date.setDate(date.getDate()-1);
    return date.toISOString();
}

console.log(humanize(getYesterdayAsISO()));
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>

1 Ответ

0 голосов
/ 05 октября 2018

Они находятся в файлах перевода.Вы можете изменить их в relativeTime в en-gb.js в строке 42 :

d : 'yesterday',

Но это все равно отображается как yesterday ago.Право, которое вы можете изменить, это past

past : '%s ago',

Кроме того, не меняя источник, я добавил следующее, введя:

moment.updateLocale('en-gb', {
  relativeTime: {
    past : '%s',
    d : 'yesterday'
  }
});

Выше может работать не во всехслучаи, и это должно быть специально использовано только для вашего текущего проекта.

Я получаю в консоли следующее:

enter image description here

Рабочий пример

moment.updateLocale('en-gb', {
  relativeTime: {
    past : '%s',
    d : 'yesterday'
  }
});

function humanize(date) {
  const then = moment.utc(date); 

  return then.fromNow();
}

function getYesterdayAsISO() {
  var date = new Date();
  date.setDate(date.getDate()-1);
  return date.toISOString();
}

console.log(humanize(getYesterdayAsISO()));
<script src="https://momentjs.com/downloads/moment-with-locales.min.js"></script>
...