Як я можу отримати секунди з епохи в 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);

8
var seconds = new Date() / 1000;<- що це за таємнича магія?
Мартін Вікман

3
Re: таємнича магія: У цих документах Javascript знає, як перетворити об’єкт Date в число. Це означає, що ви можете ввести Number(new Date())число або навіть +(new Date())використовувати або використовувати будь-який екземпляр дати в числовому контексті, наприклад, new Date()/1000а Javascript допоможе перетворити цей екземпляр дати в число для роботи з математичними рівняннями.
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();

3
Це має бути відповіддю, оскільки враховує десятковий.
Джеймс Пак

11

Вищезазначені рішення використовують властивості екземпляра. Інший спосіб - використання властивості класу Date.now:

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

Якщо ви хочете, щоб time_in_seconds було цілим числом, у вас є два варіанти:

а. Якщо ви хочете відповідати усіченню стилю 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);

9

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

var seconds = Math.floor(new Date() / 1000);

5

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

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

Якщо потрібно кілька секунд, розділіть їх на 1000:

var sec = new Date().getTime() / 1000;




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);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.