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

Хотя официальная документация объекта Date в Javascript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date очень ясно говорит об этом, с его использованием могут возникнуть проблемы.

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

В общем, мне нужно было вызвать API для получения данных за день до выполнения скрипта, между 00:00:00 и 23:59:59. Для полезной нагрузки требовались даты начала и окончания в формате https://en.wikipedia.org/wiki/ISO_8601 ISO 8601. Ниже приведены шаги.

Определение вчерашней даты:

  • путем получения текущей метки времени путем создания экземпляра нового объекта Date и деления его на 1000 (поскольку вы знаете, что Javascript возвращает метки времени с миллисекундами)
  • вычитая 86400 секунд (количество секунд в 24 часах), чтобы добраться до вчерашнего дня
const yesterday_ts = Math.floor(new Date() / 1000) - 86400;

Установка дат начала и окончания соответственно на 00:00:00 и 23:59:59:

  • Создайте новый объект Date с ранее рассчитанной меткой времени, умноженной на 1000 (чтобы включить миллисекунды, все еще следующие?)
let start_date = new Date(yesterday_ts * 1000);
let end_date = new Date(yesterday_ts * 1000);
  • Установка вручную точных часов для каждого объекта Date с помощью метода setHours():
start_date.setHours(0,0,0);
end_end.setHours(23,59,59);

Затем вызовите функцию toISOString() для ранее созданных экземпляров.

Готово!

(Я знаю, что я также мог бы установить end_date с текущей датой в 00:00:00, но я предпочитаю, чтобы конечный интервал был в самой последней секунде даты, а не в самой первой секунде следующего дня.)

Спасибо за чтение. Я всегда открыт для постоянного улучшения, поэтому, если у вас есть какие-либо предложения о том, как я мог бы сделать это лучше, пожалуйста, не стесняйтесь оставлять отзывы. Удачного кодирования!