Как я могу получить секунды с эпохи в Javascript?

152

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

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

Алиса
источник

Ответы:

246
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);
DVK
источник
8
var seconds = new Date() / 1000;<- что это за тайная магия?
Мартин
3
Re: тайная магия: согласно этим документам , Javascript знает, как преобразовать объект Date в число. Это означает, что вы можете напечатать, Number(new Date())чтобы получить число или даже +(new Date()), или использовать любой экземпляр Date в числовом контексте, например, new Date()/1000и Javascript будет любезно преобразовывать этот экземпляр Date в число для работы с вашими математическими уравнениями.
dpmott
59

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

new Date().getTime() / 1000

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

Томаш Нуркевич
источник
39

Вы хотели секунды с эпохи

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

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

foo = seconds_since_epoch();
user40521
источник
3
Это должен быть ответ, так как он учитывает десятичную дробь.
Джеймс Пак
11

Вышеуказанные решения используют свойства экземпляра. Другой способ - использовать свойство класса 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);
dotgc
источник
9

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

var seconds = Math.floor(new Date() / 1000);
Райан Креагер
источник
5

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

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

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

var sec = new Date().getTime() / 1000;
jfriend00
источник
1

Самая простая версия:

Math.floor(Date.now() / 1000) 
aristidesfl
источник
0
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
Танзим Бхатти
источник