Javascript относительное время 24 часа назад и т.д. Как время

Я пытаюсь использовать высокие графики, чтобы показать некоторые данные за последние 24 часа. Для диаграммы требуется время начала, когда вы используете время для оси x, как в этом примере для примера Highcharts time. Я не могу понять, как сказать, что это должно начаться 24 часа назад, например, если время было 22:34 18-го, я хочу, чтобы оно началось в 22:34 17-го. Я не очень хорош со временем и датой, и Javascript также не является моей сильной стороной. Полагаю, мне нужно, чтобы готовый вывод был примерно таким: pointStart: Date.UTC(2012, 5, 17, 22, 34): pointStart: Date.UTC(2012, 5, 17, 22, 34) Для приведенного выше примера, но я не совсем уверен, как получить это из Date().

Редактировать: я не уверен, почему он был помечен как дубликат, но я пытался получить время относительно текущего времени (сейчас - 24 часа), а не относительное строковое представление ("двадцать четыре часа назад"). Другой вопрос также вообще не затрагивает высокие чарты.

Ответ 1

Вы должны использовать временные метки, которые вы можете рассчитать с ними.

Вот как вы получаете текущую метку времени: Math.round(new Date().getTime() / 1000) Обратите внимание, что это локальное время компьютера.

Теперь вы можете получить timestamp 24 часа назад, как это:

var ts = Math.round(new Date().getTime() / 1000);
var tsYesterday = ts - (24 * 3600);

Смотрите эту скрипту: http://jsfiddle.net/Mjm7V/

Edit: Как правильно указал Ник, Date#getTime возвращает метку времени UTC (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)

Ответ 2

Это на самом деле довольно просто:

var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));

Просто создайте новый Date со значением текущей метки времени минус 24 часа.

(24 часа, умноженное на 60 минут в каждый час, умноженное на 60 секунд в каждую минуту, умноженное на 1000 миллисекунд в секунду)

Ответ 3

Просто вычтите количество миллисекунд за 24 часа с даты:

new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000)

Ответ 4

24 часа назад:

new Date(Date.now() - 86400 * 1000).toISOString()

  • сейчас: new Date().toISOString()
  • выходы: '2017-02-04T09:15:25.233Z'
  • Date.now() возвращает секунды с эпохи.
  • Вычитает 86400 секунды в дневное время 1000 для преобразования в миллисекунды
  • выходы: '2017-02-03T09:14:11.789Z'