Получить текущую дату / время в секундах

Ответы:

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

.... даст вам секунды с полуночи, 1 января 1970 года

Ссылка

sje397
источник
13
Хотя это точно, когда это будет полезно? :)
Ник Крейвер
6
@ Ник - Я думаю, что все примеры обязательно умозрительны и будут звучать надуманными - но я сделаю снимок :) Предположим, у вас есть время данных с меткой времени unix, и вы хотите определить его возраст. Более того, хотя я думаю, что это, скорее всего, означает «текущая дата / время в секундах»; только мое внутреннее чувство.
sje397 30.09.10
3
Приложение, где мне это было нужно, работало с PHP-сервером, так как функция time () уже возвращает это. Это также отлично подходит для отметки времени, поскольку вы можете легко получить разницу между time (), которое является нашим текущим временем, и отметкой времени предыдущего времени, которая была сохранена в базе данных, например, когда пользователь что-то опубликовал. В случае, если вы хотите получить отформатированное время, например «22 октября 2015 года», вы можете создать свою собственную функцию, возвращающую ее из метки времени в качестве аргумента, или использовать ее уже здесь, в стеке. В любом случае, надеюсь, что это даст вам некоторое представление о том, когда это будет полезно. @NickCraver
uhfocuz
21
Стоит отметить, что вы хотите обернуть это в Math.floor (), иначе вы получите десятичную дробь.
Дэвид Уэббер
11
Одним из способов, которым это было бы полезно, было бы вычисление времени, прошедшего между двумя разами.
Зак
65

Использование new Date().getTime() / 1000- неполное решение для получения секунд, потому что это производит метки времени с единицами с плавающей запятой.

const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds. 

Лучшее решение было бы:

// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937

// - OR -

// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936

Значения без значений с плавающей точкой также более безопасны для условных операторов, так как значения с плавающей точкой могут давать нежелательные результаты. Степень детализации, которую вы получаете с помощью поплавка, может быть больше, чем нужно.

if (1405792936.993 < 1405792937) // true
tfmontague
источник
1
Полностью согласен 👍 ИспользованиеMath.round(new Date() / 1000)
gdibble
37

Исходя из вашего комментария, я думаю, что вы ищете что-то вроде этого:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

Затем в вашем чеке вы проверяете:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}
Ник Крейвер
источник
16

Чтобы получить количество секунд из эпохи Javascript, используйте:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
Лазарь
источник
9

// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)

// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000));  // 1443535752
console.log(Math.floor(Date.now() / 1000));            // 1443535752
console.log(Math.floor(new Date().getTime() / 1000));  // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

JQuery

console.log(Math.floor($.now() / 1000));               // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

blueberry0xff
источник
3

Эти решения JavaScript дают вам миллисекунды или секунды с полуночи 1 января 1970 года.

Решение IE 9+ (IE 8 или более старая версия не поддерживают это.):

var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
    timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
    timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.

Чтобы получить больше информации о Date.now(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

Общее решение:

// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
    timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
    timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.

Будьте осторожны в использовании, если вы не хотите что-то подобное этому делу.

if(1000000 < Math.round(1000000.2)) // false.
Константин Ван
источник
2
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

Это должно дать вам миллисекунды с начала дня.

(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000

Это должно дать вам секунды.

(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000

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

Генеральный директор RecDecLec
источник
1

Вы можете встретить другой способ получить время в секундах / миллисекундах с 1 января 1970 года:

var milliseconds = +new Date;        
var seconds = milliseconds / 1000;

Но будьте осторожны с таким подходом, потому что это может быть сложно читать и понимать его.

Tetta
источник
Я не знаю, так как при использовании побочных эффектов языка это более элегантный способ.
Томазалин
1

Лучшие короткие пути:

+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch
dr.dimitru
источник
0

В какой-то день в 2020 году внутри Chrome 80.0.3987.132 это дает 1584533105

~~(new Date()/1000) // 1584533105
Number.isInteger(~~(new Date()/1000)) // true
etoricky
источник
-1

Чтобы получить сегодняшние суммарные секунды дня:

getTodaysTotalSeconds(){
    let date = new Date();        
    return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}

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

Сачин Шах
источник