38 Вопрос: Как вы получаете метку времени в JavaScript?

вопрос создан в Mon, Apr 27, 2015 12:00 AM

Как я могу получить метку времени в JavaScript?

Нечто похожее на временную метку Unix, то есть одно число, представляющее текущее время и дату. Либо в виде числа, либо в виде строки.

    
3707
  1. Как получить 64-битную метку времени в JS?
    2018-03-17 01: 32: 02Z
  2. @ AlexanderMills Поскольку JavaScript не поддерживает 64-разрядные целые числа, вам необходимо получить два 32-разрядных целых числа. Задайте другой вопрос.
    2018-04-13 07: 32: 05Z
30 ответов                              30                         

Short & Snazzy:

 
+ new Date()

Унарный оператор, такой как plus, запускает метод valueOf в объекте Date и возвращает метку времени (без каких-либо изменений).

Детали:

Почти во всех современных браузерах вы можете использовать Date.now() чтобы получить метку времени UTC в миллисекундах ; заметным исключением является IE8 и более ранние версии (см. таблицу совместимости ). . р>

Вы можете легко подобрать прокладку для этого, хотя:

 
if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Чтобы получить метку времени в секундах , вы можете использовать:

 
Math.floor(Date.now() / 1000)

Или вы можете использовать:

 
Date.now() / 1000 | 0

Который должен быть немного быстрее, но также и менее читаемым (также см. этот ответ ).

Я бы порекомендовал использовать Date.now() (с прокладкой совместимости). Это немного лучше, потому что это короче & не создает новый объект Date. Тем не менее, если вы не хотите шим & Для максимальной совместимости вы можете использовать «старый» метод, чтобы получить метку времени в миллисекундах :

 
new Date().getTime()

Который вы можете затем преобразовать в секунды следующим образом:

 
Math.round(new Date().getTime()/1000)

И вы также можете использовать метод valueOf, который мы показали выше:

 
new Date().valueOf()

Отметка времени в миллисекундах

р>

 
var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());
    
4566
2018-05-30 11: 01: 20Z
  1. Другим заметным исключением является node.js. Я пришел сюда из Google, пытаясь сделать то же самое в узле
    2015-01-16 17: 33: 09Z
  2. Date.now() / 1000 | 0 не пострадает от года 2038 проблема ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
    2015-05-03 07: 03: 17Z
  3. или даже без Math.floor .. ~~(Date.now() / 1000)
    2015-05-19 15: 23: 48Z
  4. @ MilanBabuškov, но node.js поддерживает Date.now()
    2016-04-04 13: 08: 07Z
  5. Хотя +new Data умный, он не доступен для чтения другим разработчикам. Date.now() понятнее и гарантирует, что все остальные знают, что происходит.
    2017-03-29 19: 06: 36Z

Мне это нравится, потому что он маленький:

 
+new Date

Мне тоже это нравится, потому что он такой же короткий и совместим с современными браузерами, и более 500 человек проголосовали за то, чтобы он стал лучше:

 
Date.now()
    
474
2017-11-30 19: 23: 44Z
  1. Это плохая идея. Его легко не заметить, он выглядит как опечатка и в действительности зависит от языкового побочного эффекта. Я вижу плохой код.
    2012-10-29 15: 51: 23Z
  2. @ Билли Насколько я помню, я вычислил временную метку в двух предложенных решениях по 1 млн раз каждый и вычислил среднее время выполнения. Я запускал его в Firefox и Chrome, причем getTime был быстрее в обоих браузерах. Тем не менее, даже если бы (немного) медленнее, я бы выбрал new Date().getTime(). К счастью для меня, более быстрое решение - это уже разборчивое решение!
    2013-07-08 12: 44: 19Z
  3. Согласовано с @ FabrícioMatté. Поведение унарного оператора может быть не элементарным, но если вы не разбираетесь в нем, не ожидайте, что сможете эффективно функционировать во многих командах.
    2013-07-18 01: 58: 54Z
  4. @ Niklaus Это потому, что вы объединяете его с другой строкой. В этом случае вызывается new Date().toString().
    2013-10-02 11: 50: 18Z
  5. из любопытства, что делает оператор +, чтобы он выглядел как строка?
    2014-12-19 10: 47: 52Z

JavaScript работает с количеством миллисекунд с начала эпохи, тогда как большинство других языков работают с секундами. Вы можете работать с миллисекундами, но как только вы передадите значение, скажем, PHP, родные функции PHP, вероятно, потерпят неудачу. Поэтому я всегда использую секунды, а не миллисекунды.

Это даст вам метку времени Unix (в секундах):

 
var unix = Math.round(+new Date()/1000);

Это даст вам миллисекунды с начала эпохи (не отметка времени Unix):

 
var milliseconds = new Date().getTime();
    
255
2011-05-30 21: 12: 15Z
  1. PHP должен нормально работать с миллисекундами, так как он сам использует их с функцией microtime ().
    2011-09-10 00: 34: 04Z
  2. Хотя функция microtime () присутствует, большинство функций, связанных с временем в php, ожидают, что отметка времени будет в секундах, а не в миллисекундах. Более того, microtime () возвращает число с плавающей запятой (если вы передаете true), где десятичная часть - это доли секунды (с точностью до микросекунды), а newDate (). GetTime () возвращает int, где он просто считает миллисекунды, так как эпоха. Например, (php), если бы вы вызывали floor (microtime (true)), это фактически было бы то же самое, что и time () вызова, которое указывалось в секундах, а не в микро- или миллисекундах. Деление на 1000, как указано выше, является самым простым решением для этого.
    2012-05-02 21: 32: 39Z
  3. Вместо округления используйте слово floor. 700 мс все еще не целая секунда
    2014-02-10 08: 36: 54Z
 
var time = Date.now || function() {
  return +new Date;
};

time();
    
135
2014-12-16 13: 31: 37Z
  1. Почему || оператор? Date.now () доступен не во всех браузерах?
    2008-10-22 00: 58: 58Z
  2. Очевидно нет, я нашел код в modulejs
    2008-11-04 08: 13: 27Z
  3. 2011-07-14 18: 54: 59Z
  4. Двигатели, которые не были обновлены для поддержки метода Date.now, могут обойти его отсутствие, используя следующий shim: if (! Date.now) {Date. сейчас = функция сейчас () {возврат + (новая дата); }; }
    2012-10-04 07: 21: 16Z

Я предоставляю несколько решений с описаниями в этом ответе. Не стесняйтесь задавать вопросы, если что-то неясно
PS: к сожалению, кто-то слил это в топ-ответ, не отдавая должное.

Быстрое и грязное решение:

 
Date.now() /1000 |0
  

Предупреждение : он может сломаться в 2038 году и вернуть отрицательные числа, если вы используете магию |0. Вместо этого используйте Math.floor() к тому времени

Math.floor() решение:

 
Math.floor(Date.now() /1000);

Некоторая альтернатива от Дерека 朕 會 功夫 взята из комментариев ниже этого ответа:

 
new Date/1e3|0

Polyfill для работы Date.now():

Чтобы заставить его работать в IE, вы можете сделать это (Polyfill из MDN ): р>  

if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

Если вас не интересует год /день недели /летнее время, вы можете убрать его и использовать после 2038 года:

 
var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();
  

Некоторые выводы о том, как это будет выглядеть:

 
new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )
     

Конечно, это нарушит летнее время, но в зависимости от того, что вы   строим это может быть полезно для вас, если вам нужно сделать бинарный   операции с метками времени после int32 прервутся в 2038 году.

     

Это также будет возвращать отрицательные значения, но только если пользователь этого ПК   Вы запускаете свой код меняет часы своего компьютера, по крайней мере, на   31 декабря предыдущего года.

Если вы просто хотите узнать относительное время с момента первого запуска кода, вы можете использовать что-то вроде этого:

 
var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

Если вы используете jQuery, вы можете использовать $.now(), как описано в Документах jQuery что делает полифилл устаревшим, так как внутренне $.now() делает то же самое: (new Date).getTime()

Если вы просто довольны версией jQuery, рассмотрите вариант этого ответа, поскольку я его не нашел я сам.

Теперь небольшое объяснение того, что делает |0:

Предоставляя |, вы указываете интерпретатору выполнить двоичную операцию ИЛИ. Битовые операции требуют абсолютных чисел, которые превращают десятичный результат из Date.now() / 1000 в целое число.

Во время этого преобразования удаляются десятичные дроби, что приводит к тому же результату, что и при использовании Math.floor(), но с использованием меньшего количества кода.

  

Будьте осторожны: он преобразует 64-битное двойное в 32-битное целое число. Это приведет к потере информации при работе с огромными числами. Метки времени будут прерываться после 2038 года из-за переполнения 32-разрядного целого числа.

Для получения дополнительной информации о Date.now перейдите по этой ссылке: Date.now() @ MDN

    
116
2018-04-04 15: 46: 05Z
  1. | 0 похож на Math.floor (), поскольку это битовая операция (которая не работает с плавающими). обычно это даже быстрее, чем Math.floor (), поскольку это не вызов функции, это собственный оператор javascript.
    2012-08-24 06: 53: 27Z
  2. 2013-03-16 02: 36: 33Z
  3. @ Кристоф, почему ты так думаешь? из-за IE исправить? я думаю, что эта часть довольно простая и настраиваемая.
    2013-09-16 09: 58: 00Z
  4. полифилы /прокладки не сложны. Они являются результатом необходимости поддерживать 9 различных версий браузеров, и отрасль решает выбрать, какие стандарты они принимают, а какие просто составляют.
    2013-09-24 20: 35: 38Z
  5. Для справки самое компактное, что вы можете получить, это new Date/1e3|0.
    2014-11-15 02: 11: 08Z
 
var timestamp = Number(new Date()); // current time as number
    
80
2008-10-21 13: 00: 22Z

jQuery предоставляет свой собственный метод для получения метки времени: р>  

var timestamp = $.now();

(кроме того, он просто реализует выражение (new Date).getTime())

REF: http://api.jquery.com/jQuery. Теперь /

    
58
2013-03-15 14: 19: 22Z
  1. jQuery также позаботится о любых проблемах кросс-браузерной совместимости с различными API-интерфейсами JavaScript.
    2014-12-09 21: 55: 52Z
  2. @ VisioN Я искал способ делать отметки времени в Node.js. Я нашел вопрос javascript в stackoverflow и получил ответ в jQuery, который не помогает. Javascript и JQuery - это две вещи. Если мы дадим ответы на все фреймворки javascript, мы получим, возможно, бесконечное количество ответов, что противоречит философии Q /A в stackoverflow. Также: i.stack.imgur.com/Ledgt.gif : D
    2015-01-28 08: 38: 39Z
  3. @ VisioN Кто сказал, что JavaScript должен использоваться в браузере?
    2015-01-28 09: 03: 15Z
  4. @ PierreArlaud А кто сказал, что этот вопрос касается только NodeJS?
    2015-07-15 08: 27: 29Z
  5. @ KingRider Нет необходимости в parseInt, так как полученное значение всегда будет Number.
    2016-12-19 14: 05: 32Z

р>

 
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
    
40
2016-06-24 18: 48: 56Z
  1. Это равно +new Date ..:)
    2011-11-01 20: 01: 22Z
  2. просто сделайте Date.now()
    2013-05-20 22: 12: 36Z
  3. @ Орландо, посмотрите другие ответы, проблема с now () заключается в поддержке браузера
    2013-09-14 16: 49: 01Z
  4. @ Кристоф просто делает простое полифиллинг, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    2013-09-14 16: 52: 02Z
  5. @ точно Орландо, не просто делайте Date.now ()
    2013-09-14 16: 53: 36Z

Просто добавим, вот функция для возврата строки метки времени в Javascript. Пример: 15:06:38

 
function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}
    
39
2012-09-21 19: 46: 55Z
  1. ОП запрашивает целую временную метку; это строковое представление времени.
    2012-10-10 19: 36: 46Z
  2. "аналогично метке времени Unix, то есть единственному числу, представляющему текущее время"
    2013-01-16 19: 44: 18Z
  3. У меня был код для отображения времени, но в некоторых частях Австралии отображалась полная дата, этот скрипт помог мне разбить его и отобразить правильно. (+1 за это)
    2018-02-07 00: 27: 35Z

В дополнение к другим опциям, если вы хотите получить ISO-формат даты, вы можете получить его напрямую

р>

 
console.log(new Date().toISOString());
    
39
2016-06-24 18: 59: 36Z
  1. Он не возвращает целое число с заданным вопросом!
    2016-09-22 23: 01: 57Z
  2. @ AlexVentura со строковым форматом даты ISO, вы можете создать экземпляр объекта даты и вычесть между ними. Например: new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
    2017-05-04 07: 19: 53Z

Date , нативный объект в JavaScript - это способ получения всех данных о времени.

Просто будьте осторожны в JavaScript, временная метка зависит от установленного клиентского компьютера, поэтому она не является точной на 100%. Чтобы получить наилучший результат, вам нужно получить временную метку от серверной части .

В любом случае, я предпочитаю использовать ваниль. Это распространенный способ сделать это в JavaScript:

 
Date.now(); //return 1495255666921

В MDN это упоминается ниже:

  

Метод Date.now () возвращает количество миллисекунд, прошедших с   1 января 1970 г. 00:00:00 UTC.
  Поскольку now () является статическим методом Date, вы всегда используете его как Date.now ().

Если вы используете версию ниже ES5, Date.now(); не работает, и вам нужно использовать:

 
new Date().getTime();
    
33
2019-01-28 06: 24: 14Z

Я еще не видел

 
Math.floor(Date.now() / 1000); // current time in seconds

Еще один, которого я еще не видел, это

 
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
    
28
2018-04-04 16: 10: 50Z
  1. Date.now() /1000 |0 делает то же самое, и на него уже был дан ответ
    2014-12-17 13: 55: 34Z
  2. хорошо. Я уверен, что отредактировал Math.floor() в нем, но только чтобы прояснить, что он имеет тот же эффект, что и |0. я не хотел причинить тебе боль или что-то еще Я просто хотел сказать вам, что ваш ответ каким-то образом уже существует. глядя на все приведенные ответы, некоторые из них так или иначе замечают слово.
    2014-12-21 14: 16: 19Z
  3. Я думаю, что импортировать всю библиотеку Lodash только для использования _.now() немного излишне. Я бы рекомендовал импортировать только те функции Lodash, которые вам нужны (в этом случае _.now () на NPM ), но даже они отказались от своего пакета в пользу только использования Date.now().
    2018-04-04 15: 03: 18Z

метод Date.getTime() можно использовать с небольшим количеством настройки:

  

Значение, возвращаемое методом getTime, равно количеству миллисекунд.   с 1 января 1970 года 00:00:00 UTC.

Разделите результат на 1000, чтобы получить метку времени Unix, floor при необходимости:

 
(new Date).getTime() / 1000

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

    
26
2015-05-07 09: 10: 28Z
  1. Вам не нужны круглые скобки: new Date().getTime() / 1000
    2012-05-30 05: 01: 49Z
  2. Они вам не нужны, но они делают код более читабельным (IMHO). Вопрос вкуса, я думаю.
    2012-09-18 07: 10: 27Z
  3. Вам даже не нужны () после new Date и .getTime(), так как / все равно преобразует объект Date в число.
    2014-11-15 02: 12: 34Z

Код Math.floor(new Date().getTime() / 1000) можно сократить до new Date / 1E3 | 0.

Пропустите прямые getTime() вызов и использование | 0 в качестве замены для Math.floor() функция. Также хорошо помнить, что 1E3 является более коротким эквивалентом для 1000 (заглавная буква E предпочтительнее, чем строчная, чтобы указать 1E3 в качестве константы).

В результате вы получите следующее:

р>

 
var ts = new Date / 1E3 | 0;

console.log(ts);
    
24
2018-03-27 06: 08: 05Z
  1. Да, не сокращайте код вручную, особенно для сохранения 1 байта.
    2016-02-07 17: 08: 23Z
  2. @ dchest "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; 37 -14 = 23 байт;
    2016-09-24 03: 39: 05Z
  3. Отличный способ сделать ваш код нечитаемым ...
    2017-10-25 07: 51: 22Z
  4. @ Valentin Вы минимизируете /усложняете простой код практически без каких-либо преимуществ. яне вижу смысла делать это. Мы не на Code Golf!
    2017-10-29 07: 58: 21Z
  5. @ Valentin Пожалуйста, объясните мне, как замена Math.floor() на |0 делает этот код "ясным и понятным". Объясните мне, в чем смысл сохранять 1 байт, заменив 1000 на 1E3. Это нелепо. Я вижу плохой код.
    2017-10-31 08: 46: 12Z

Я настоятельно рекомендую использовать moment.js. Чтобы узнать количество миллисекунд с начала UNIX, выполните

 
moment().valueOf()

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

 
moment().unix()

Вы также можете конвертировать время так:

 
moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

Я делаю это все время. Не каламбур.

Чтобы использовать moment.js в браузере:

 
<script src="moment.js"></script>
<script>
    moment().valueOf();
</script>

Подробнее, в том числе о других способах установки и использования MomentJS, см. в документах

.     
21
2015-10-01 07: 28: 33Z

Вот простая функция для генерации отметки времени в формате: мм /дд /гг чч: ми: сс

 
function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}
    
20
2013-07-03 15: 10: 49Z
  1. @ b123400 - вот версия Lisp: (new (chain (-date) (to-i-s-o-string))).
    2013-08-24 03: 17: 17Z

р>

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

// seconds
console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720
console.log(Math.floor(Date.now() / 1000)); // 1443534720
console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720

// milliseconds
console.log(Math.floor(new Date().valueOf())); // 1443534720087
console.log(Math.floor(Date.now())); // 1443534720087
console.log(Math.floor(new Date().getTime())); // 1443534720087

// jQuery
// seconds
console.log(Math.floor($.now() / 1000)); // 1443534720
// milliseconds
console.log($.now()); // 1443534720087
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
20
2016-06-24 18: 47: 59Z

Вы можете использовать только

р>

 
    var timestamp = new Date().getTime();
    console.log(timestamp);

чтобы получить текущую метку времени. Не нужно делать ничего лишнего.

    
20
2016-06-24 18: 48: 03Z

Для отметки времени с микросекундным разрешением есть performance.now :

 
function time() { 
  return performance.now() + performance.timing.navigationStart;
}

Это может, например, дать 1436140826653.139, а Date.now - только 1436140826653.

    
18
2015-07-06 00: 01: 55Z

Сегодня - 2018.06.27. Я приведу сравнение времени для чисто js-решений. Это может быть полезно для людей, которые хотят получить /измерить время в JS легким и эффективным способом (например, для приложений реального времени, таких как симуляции, игры и т. Д.)

Протестировано на MacOs High Sierra 10.13.3 на Chrome 67.0.3396.99 (64-разрядная версия), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-разрядная версия). На скриншоте ниже я покажу вам результаты для самого быстрого браузера (Safari):

 введите описание изображения здесь

Как я заметил, Date.now() был самым быстрым способом получения метки времени для всех трех браузеров. Safari выполняет 19,2 млн операций в секунду, Firefox 16,1 млн, Chrome 7,8 млн.

new Date()*1 был самым медленным для Chrome (2,8 млн) и Firefox (2,6 млн). Number(new Date()) был самым медленным для Safari (2,9 млн).

Таким образом, JS-код победителя - Date.now(), а самый быстрый браузер - Safari (в 2 раза быстрее, чем Chrome!).

Вы можете заФорма теста на вашем компьютере здесь: https://jsperf.com/timestamp-test-x . р>     

18
2018-06-27 16: 59: 13Z

Любые браузеры, не поддерживаемые Date.now, вы можете использовать это для получения текущей даты:

 
currentTime = Date.now() || +new Date()
    
16
2013-05-09 06: 53: 40Z
  1. (Перефразируя мой комментарий) У вашего кода есть проблема: он выполняет метод Date.now вместо проверки его поддержки в первую очередь. В старых браузерах это вызовет Date.now не является ошибкой функции .
    2015-05-07 09: 18: 53Z
  2. Возможно, лучшей альтернативой было бы использование троичного оператора для подтверждения того, что Date.now действительно существует (и является функцией), прежде чем пытаться вызвать его: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().
    2018-04-04 14: 54: 39Z

У этого есть решение: которое преобразует метку unixtime в tim в js, попробуйте это

 
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
    
14
2013-07-01 06: 47: 59Z

Я узнал действительно крутой способ преобразования данного объекта Date в метку времени Unix из исходного кода JQuery Cookie на днях.

Вот пример:

 
var date = new Date();
var timestamp = +date;
    
14
2015-03-11 09: 52: 48Z
  1. Я собирался написать новый объект Date (). Вы можете консоль журнала (new Date ()), а затем просмотреть соответствующие методы в новом Date () объект /функция
    2018-01-18 00: 38: 17Z

Если вам нужен базовый способ создания метки времени в Node.js, это хорошо работает.

 
var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

Наша команда использует это для уничтожения кэша в среде локального хоста. Выходное значение составляет /dist/css/global.css?v=245521377, где 245521377 - метка времени, сгенерированная hrtime().

Надеюсь, это поможет, описанные выше методы также могут работать, но я обнаружил, что это самый простой подход для наших нужд в Node.js.

    
14
2015-05-29 13: 40: 52Z

Это похоже на работу.

 
console.log(clock.now);
// returns 1444356078076

console.log(clock.format(clock.now));
//returns 10/8/2015 21:02:16

console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
//returns 10/8/2015 21:08:18

var clock = {
    now:Date.now(),
    add:function (qty, units) {
            switch(units.toLowerCase()) {
                case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                case 'minutes' :  val = qty * 1000 * 60;  break;
                case 'seconds' :  val = qty * 1000;  break;
                default       :  val = undefined;  break;
                }
            return val;
            },
    format:function (timestamp){
            var date = new Date(timestamp);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hours = date.getHours();
            var minutes = "0" + date.getMinutes();
            var seconds = "0" + date.getSeconds();
            // Will display time in xx/xx/xxxx 00:00:00 format
            return formattedTime = month + '/' + 
                                day + '/' + 
                                year + ' ' + 
                                hours + ':' + 
                                minutes.substr(-2) + 
                                ':' + seconds.substr(-2);
            }
};
    
13
2015-10-09 02: 03: 25Z
  1. хорошие продвинутые сценарии, хорошая работа!
    2016-10-31 14: 42: 08Z

Для lodash и подчеркивания пользователи, используйте _.now.

 
var timestamp = _.now(); // in milliseconds
    
12
2015-03-30 08: 40: 23Z

Moment.js может отвлечь много боли при работе с датами Javascript.

См .: http://momentjs.com/docs/#/displaying/unix -timestamp / р>  

moment().unix();
    
10
2015-03-06 00: 33: 36Z
  1. Обратите внимание, что это дает количество секунд (не миллисекунд) с начала UNIX. Если вы хотите миллисекунды, используйте moment().valueOf(). Смотрите мой ответ.
    2015-07-14 08: 33: 29Z

На момент написания статьи верхнему ответу было 9 лет, и с тех пор многое изменилось - не в последнюю очередь, у нас есть почти универсальная поддержка нехакерского решения:

 
Date.now()

Если вы хотите быть абсолютно уверены, что это не сломается в каком-то древнем (до ie9) браузере, вы можете поставить его за чеком, например, так:  

const currentTimestamp = (!Date.now ? +new Date() : Date.now());

Это вернет миллисекунды со времени эпохи, конечно, не секунды.

Документация MDN на Date.now

    
9
2017-12-14 10: 09: 55Z

более простой способ:

 
var timeStamp=event.timestamp || new Date().getTime();
    
8
2013-10-26 03: 51: 22Z
  1. Что такое event?
    2015-06-06 17: 30: 55Z
  2. Знайте, откуда приходит event. Вам нужно дать лучшее объяснение того, как вы решаете эту проблему, вместо того, чтобы писать ответ. Пожалуйста!
    2016-09-22 22: 54: 34Z
  3. Я собирался написать новый объект Date (). Вы можете консоль журнала (new Date ()), а затем просмотреть соответствующие методы в новом Date () объект /функция
    2018-01-18 00: 37: 46Z

иногда мне это нужно в объектах для вызовов xmlhttp, поэтому мне это нравится.

 
timestamp : parseInt(new Date().getTime()/1000, 10)
    
6
2014-04-24 06: 46: 40Z
  1. Еще короче: new Date().getTime()/1000|0, но он медленный и грязный
    2014-09-26 13: 53: 17Z
  2. Я собирался написать новый объект Date (). Вы можете консоль журнала (new Date ()), а затем просмотреть соответствующие методы в новом Date () объект /функция
    2018-01-18 00: 37: 52Z
источник размещен Вот