@700Hp

Как высчитать и вернуть разницу в секундах в сравнении времени?

const date = Date.now()
const secondsMinutesLater = date + 2 * 60 * 1000

if (new Date(date).toLocaleTimeString() < user.resetDate) {
          // return
        }

// таким образом прежде, чем продолжить выполнение,  необходимо пройти проверку. 
user.resetDate = new Date(secondsMinutesLater).toLocaleTimeString()


Это бэк.
Хочу вернуть на фронт точное количество секунд ожидания.
Спасибо.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@tehfreak
В общем случае так:
const dateA = new Date('...')
const dateB = new Date('...')

// разница в секундах с точностью до миллисекунды
const differenceInSeconds = (dateA.getTime() - dateB.getTime()) / 1000

// затем можно или отбросить дробную часть
console.log(Math.trunc(differenceInSeconds))
// или округлить одним из методов
console.log(Math.round(differenceInSeconds))

В вашем случае, судя по комментарию к вопросу, должно быть как-то так:
let lastReqDate
app.get('/api/v1/example', (req, res) => {
  const date = new Date()
  let diff
  if (lastReqDate != null) {
    diff = (date.getTime() - lastReqDate.getTime()) / 1000
  }
  if (diff != null && diff < 120) {
      diff = Math.ceil(diff) // округление до ближайшего большего целого
      res.header('Retry-After', diff)
      res.status(429) // Too Many Requests
      res.send({ retryAfter: diff })
  } else {
      lastReqDate = date
      // выполнение запроса разрешено
  }
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
DateTime startDate = DateTime.Now.AddSeconds(-1000);
DateTime var endDate = DateTime.Now;
DateTime var totalSeconds = endDate.Subtract(startDate).TotalSeconds;
Console.WriteLine($"totalSeconds: {totalSeconds}");
Только храни все датами, а не строками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы