Как я могу получить секунды с эпохи в Javascript? - PullRequest
128 голосов
/ 26 февраля 2012

В Unix я могу запустить date '+%s', чтобы получить количество секунд с начала эпохи.Но мне нужно запросить это в браузере, а не в бэкэнде.

Есть ли способ узнать секунды после Epoch в JavaScript?

Ответы [ 7 ]

213 голосов
/ 26 февраля 2012
var seconds = new Date() / 1000;

Или, для менее хакерской версии:

var d = new Date();
var seconds = d.getTime() / 1000;

Не забудьте Math.floor() или Math.round(), чтобы округлить до ближайшего целого числа, иначе вы можете получить очень странное десятичное число, которое вам не нужно:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
54 голосов
/ 26 февраля 2012

Попробуйте это:

new Date().getTime() / 1000

Возможно, вы захотите использовать Math.floor() или Math.round() для сокращения доли в миллисекундах.

35 голосов
/ 25 января 2015

Вы хотели секунд, начиная с эпохи

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

пример использования

foo = seconds_since_epoch();
10 голосов
/ 19 января 2015

Приведенные выше решения используют свойства экземпляра. Другой способ - использовать свойство класса Date.now:

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

Если вы хотите, чтобы time_in_seconds было целым числом, у вас есть 2 варианта:

а. Если вы хотите соответствовать усечению в стиле C:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

б. Если вы хотите просто получить математическое определение целочисленного деления, просто выступите. (Делает это целочисленное деление Python).

time_in_seconds_int = Math.floor(time_in_seconds);
7 голосов
/ 28 сентября 2016

Если вы хотите, чтобы только секунды как целое число без десятичных знаков, представляющих собой миллисекунды, используйте следующее:

var seconds = Math.floor(new Date() / 1000);
5 голосов
/ 26 февраля 2012

Вы можете создать объект Date (который будет содержать текущее время) и затем вызвать getTime(), чтобы получить мс с начала эпохи.

var ms = new Date().getTime();

Если вам нужны секунды, то разделите их на1000:

var sec = new Date().getTime() / 1000;
4 голосов
/ 10 января 2014

Мой предпочтительный способ:

var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;

Для получения дополнительной информации о + прыжке вниз по кроличьей норе .

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