Javascript Таймер обратного отсчета от отметки времени в столбце строки - PullRequest
0 голосов
/ 30 марта 2020

У меня есть веб-приложение MVC C#, которое имеет представление индекса с таблицей, в которой есть записи в строках в формате времени UT C.

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

В столбце, содержащем метку времени, есть элемент с классом "Счетчик".

Мой вопрос: где находится setinterval go, и есть ли быстрый и простой способ сделать это ? Я видел несколько постов, но большинство из них запускают все таймеры одновременно, так как бы я передал значение «start» таймера функции и использовал setinterval?

Вот таблица html. Любая помощь абсолютно ценится!

<table class="table">
<tbody><tr>
    <th>Name</th>
    <th>Time</th>
</tr>
<tr>
    <td>Joe Smith</td>
    <td><span class="Counter">3/30/2020 5:34:21 PM</span></td>
</tr>
<tr>
    <td>Ray Parker</td>
    <td><span class="Counter">3/30/2020 5:32:56 PM</span></td>
</tr>
<tr>
    <td>Jack Black</td>
    <td><span class="Counter">3/30/2020 5:32:16 PM</span></td>
</tr>

1 Ответ

0 голосов
/ 30 марта 2020

То есть вы имеете в виду, что хотите показывать как this is created 34 seconds ago?

Нет нативного API, который бы показывал подобное. Вы должны сделать его самостоятельно.

// makes milliseconds to easy-readable string
const formatDateTime = ms => {
  const sec = Math.floor(ms / 1000)
  if (sec < 60) return `${sec} seconds`
  const min = Math.floor(sec / 60)
  if (min < 60) return `${min} minutes`
  const hr = Math.floor(min / 60)
  if (hr < 24) return `${hr} hours`
  const day = Math.floor(hr / 24)
  if (day < 7) return `${day} days`
  const week = Math.floor(day / 7)
  return `${week} weeks`
}

const getTimeElapsed = from => {
  const previous = new Date(from);
  const now = new Date(); // get current datetime
  const comparedTime = (now.valueOf() - previous.valueOf());
  // get compared time in "milliseconds"

  return formatDateTime(comparedTime)
}

setInterval(() => {
  const str = getTimeElapsed('3/30/2020 7:10:16 PM')
  console.log(str)
}, 1000)

works like this

Введите код в HTML самостоятельно.

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