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

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

Что-то похожее на Отметка времени Unix, то есть одно число, представляющее текущее время и дату. В виде числа или строки.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4 249
0
3 152 207
40
Перейти к ответу Данный вопрос помечен как решенный

Ответы 40

Ответ принят как подходящий

Короткие и яркие:

+ 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.info(timeStampInMs, Date.now());

Если вас интересует логика знака plus: + используется как toInt(), где он игнорирует все символы и возвращает только числа.

Umair Riaz 22.02.2021 13:26
var time = Date.now || function() {
  return +new Date;
};

time();
var timestamp = Number(new Date()); // current time as number

console.info(new Date().valueOf()); // returns the number of milliseconds since the epoch
time = Math.round(((new Date()).getTime()-Date.UTC(1970,0,1))/1000);

Это не правильно. Метод getTime () уже возвращает количество миллисекунд, прошедших с эпохи UNIX, поэтому этот расчет на самом деле все испортит.

Skone 17.06.2011 00:06

@Skone технически ничего не напортачил. Date.UTC(1970,0,1) будет оценивать всегда как 0, независимо от того, в каком часовом поясе находится пользователь. Тем не менее, я бы сказал, что это плохой ответ из-за этого.

Kip 29.08.2011 21:17

@Kip Хороший вопрос. Однако мы оба достигаем одного и того же, дополнительная арифметика здесь не нужна.

Skone 21.09.2011 20:00

@Kip - если бы кто-нибудь когда-нибудь дурачился и решил, что Эпоху нужно «изменить» («сломанный» было бы правильным словом ...), это сработало бы. К счастью, никто никогда не станет таким глупым.

Julie in Austin 04.07.2012 19:09

Если эпоха меняется, определение метки времени Unix изменяется. Это делает приведенный выше код обратно совместимым, но сломанным :)

Peter 13.04.2013 17:22

Последние 3 цифры не нужны, так что ответ хорош :)

shahzain ali 24.07.2017 09:00

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

+new Date

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

Date.now()

Этот вариант - плохая идея. Это легко упустить из виду, выглядит как опечатка и на самом деле зависит от языкового побочного эффекта. Я вижу плохой код.

inanutshellus 29.10.2012 19:51

@Billy Насколько я помню, я вычислил метку времени в двух предлагаемых решениях по 1 млн раз каждое и вычислил среднее время выполнения. Я запускал его в Firefox и Chrome, при этом getTime работал быстрее в обоих браузерах. Тем не менее, даже если бы он был (немного) медленнее, я бы выбрал new Date().getTime(). К счастью для меня, более быстрое решение уже является удобочитаемым!

inanutshellus 08.07.2013 16:44

Согласен с @ FabrícioMatté. Поведение унарного оператора может и не быть рудиментарным, но если вы его не освежили, не ожидайте, что сможете эффективно работать во многих командах.

Jason T Featheringham 18.07.2013 05:58

Не полезно. Это вернуло строку времени (как в «Суббота, 14-е ...») при выполнении var foo = 'NEW-' + new Date;.

Niklaus 17.09.2013 14:38

@Niklaus Это потому, что вы объединяете его с другой строкой. В этом случае вызывается new Date().toString().

kirb 02.10.2013 15:50

из любопытства, что делает оператор +, чтобы он выглядел как струна?

zadubz 19.12.2014 13:47

+ в этом случае является унарной математикой. typeof (+ new Date ()) оценивается как «число». В основном это сокращение от new Date (). ValueOf () - без вызова функции javascript. Но не пишите так, это похоже на опечатку.

ansiart 21.12.2014 01:58

Если бы это было охвачено модульными тестами, это не было бы такой проблемой.

Rimian 12.03.2015 13:40

@Niklaus, в этом случае вам понадобится еще один плюс, чтобы действовать как унарный оператор: 'NEW-' + +new Date

1j01 17.03.2015 22:42

+ New Date, похоже, не работает в Chrome 52, если желаемый эффект заключается в генерации целого числа. Я уверен, что это сработало на старых Chromes.

Marcus Johansson 04.09.2016 11:56

Люди @MarcusJohansson должны использовать Date.now(), если они используют более новый браузер, такой как Chrome. Я пробовал это в Chrome 52, а в Chrome Canary 55 и +new Date все еще работали.

xer0x 08.09.2016 23:43

@ FelixGagnon-Grenier Я добавил Date.now(), потому что сейчас это предпочтительный способ, и многим людям не нравится +new Date. Мне нравится, что ответ daveb теперь включает +new Date и объясняет его, но раньше он тоже не был.

xer0x 04.01.2017 03:15

Итак, чтобы получить числовое значение, которое уже находится внутри вашего компьютера, вы создаете объект, вызываете оператор, который требует int и запускает преобразование, которое вызывает функцию (valueOf), которая вызывает метод преобразования класса, который вызывает функцию (getTime), которая, наконец, извлекает значение, которое уже было там. Затем объект бросается на произвол судьбы, и после 1000 итераций цикла у вас остается 1000 удаленных объектов Date, требующих сборки мусора, которые внезапно сбрасываются вместе, и пока ваш компьютер тормозит, вы задаетесь вопросом, что происходит. :)

FrancescoMM 06.07.2017 20:23

+0 за "и более 357 человек проголосовали, что так лучше", потому что мы не голосуем за смешное на SO. Но +1 за хороший ответ. А потому что это смешно. ; ^) (Я действительно устаю от жалоб типа "похоже на опечатку", когда речь идет о языковой особенности. ~~ - отличный усеченный вариант, но люди предъявляют те же жалобы. Но если бы его не было, кто-то изобрел бы это, вы знаете? Выучите язык, 357 человек! Это весело.)

ruffin 28.07.2017 21:01

Если вас интересует логика знака plus: + используется как toInt(), где он игнорирует все символы и возвращает только числа.

Umair Riaz 22.02.2021 13:35

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

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

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

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

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

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

The value returned by the getTime method is the number of milliseconds since 1 January 1970 00:00:00 UTC.

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

(new Date).getTime() / 1000

The Date.valueOf() method is functionally equivalent to Date.getTime(), which makes it possible to use arithmetic operators on date object to achieve identical results. In my opinion, this approach affects readability.

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


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

Date.now() /1000 |0

Warning: it might break in 2038 and return negative numbers if you do the |0 magic. Use Math.floor() instead by that time

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

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

Некоторая ботаная альтернатива Дерек 朕 會 功夫, взятая из комментариев под этим ответом:

new Date/1e3|0

Полифилл для работы 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
    }
})();

Some output of how it will look:

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 )

Of course it will break daylight saving time but depending on what you are building this might be useful to you if you need to do binary operations on timestamps after int32 will break in 2038.

This will also return negative values but only if the user of that PC you are running your code on is changing their PC's clock at least to 31th of december of the previous year.


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

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(), но с использованием меньшего количества кода.

Be warned though: it will convert a 64 bit double to a 32 bit integer. This will result in information loss when dealing with huge numbers. Timestamps will break after 2038 due to 32 bit integer overflow.


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

Чтобы подвести итог, вот функция, возвращающая строку отметки времени в Javascript. Пример: 15:06:38 PM

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;
}

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

var timestamp = $.now();

(besides it just implements (new Date).getTime() expression)

ССЫЛКА:http://api.jquery.com/jQuery.now/

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

currentTime = Date.now() || +new Date()

(Перефразируя мой комментарий) У вашего кода есть проблема: он выполняет метод Date.now вместо того, чтобы сначала проверять его поддержку. В старых браузерах это вызовет ошибку Date.now не является функцией.

Salman A 07.05.2015 12:18

Возможно, лучшей альтернативой было бы использование тернарного оператора, чтобы утверждать, что Date.now действительно существует (и является функцией), прежде чем пытаться вызвать его: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().

mgthomas99 04.04.2018 17:54

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

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())));
}

@ b123400 - Вот версия Лиспа: (new (chain (-date) (to-i-s-o-string))).

Inaimathi 24.08.2013 07:17

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

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();

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

var timeStamp=event.timestamp || new Date().getTime();

Знаю, откуда берется event. Вместо того, чтобы писать ответ, вам нужно лучше объяснить способ решения этой проблемы. Пожалуйста!

alexventuraio 23.09.2016 01:54

Я собирался написать новый объект Date (). Вы можете выполнить консольный журнал (new Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ().

sg28 18.01.2018 03:37

Я еще не видел

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

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

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();

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

timestamp : parseInt(new Date().getTime()/1000, 10)

Еще короче: new Date().getTime()/1000|0, но он медленный и грязный

EaterOfCode 26.09.2014 17:53

Я собирался написать новый объект Date (). Вы можете выполнить консольный журнал (new Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ().

sg28 18.01.2018 03:37

Вот еще одно решение для создания метки времени в JavaScript, включая метод заполнения для отдельных чисел, с использованием дня, месяца, года, часа, минуты и секунд в его результате (рабочий пример на jsfiddle):

var pad = function(int) { return int < 10 ? 0 + int : int; };
var timestamp = new Date();

    timestamp.day = [
        pad(timestamp.getDate()),
        pad(timestamp.getMonth() + 1), // getMonth() returns 0 to 11.
        timestamp.getFullYear()
    ];

    timestamp.time = [
        pad(timestamp.getHours()),
        pad(timestamp.getMinutes()),
        pad(timestamp.getSeconds())
    ];

timestamp.now = parseInt(timestamp.day.join("") + timestamp.time.join(""));
alert(timestamp.now);

Moment.js может избавить вас от многих проблем, связанных с датами Javascript.

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

moment().unix();

Обратите внимание, что это дает количество секунд (не миллисекунд) с эпохи UNIX. Если вам нужны миллисекунды, используйте moment().valueOf(). Смотрите мой ответ.

FullStack 14.07.2015 11:33

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

Вот пример:

var date = new Date();
var timestamp = +date;

Я собирался написать новый объект Date (). Вы можете выполнить консольный журнал (new Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ().

sg28 18.01.2018 03:38

var my_timestamp = ~~(Date.now()/1000);

Почему голосование против? ~~ - это тот же parseInt .. хорошая плохая школа

KingRider 31.10.2016 17:38

Рекомендуемый, правильный способ - Number(new Date()), с точки зрения читабельности кода,

Кроме того, UglifyJS и Google-Closure-Compiler снизят сложность анализируемого дерева логики кода (актуально, если вы используете одно из них, чтобы скрыть / минимизировать свой код).

для временной метки Unix, которая имеет более низкое временное разрешение, просто разделите текущее число на 1000, сохранив целое.

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

var timestamp = _.now(); // in milliseconds
var d = new Date();
console.info(d.valueOf()); 

Я собирался написать новый объект Date (). Вы можете выполнить консольный журнал (new Date ()), а затем просмотреть связанные методы в объекте / функции new Date (). новый метод Date (). getTime () предоставит вам время в формате EPOCH, которое при необходимости может быть интерпретировано

sg28 18.01.2018 03:38

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

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

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

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

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

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

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

Я настоятельно рекомендую использовать 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, см. Их документы

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

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

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

// jQuery
// seconds
console.info(Math.floor($.now() / 1000)); // 1443534720
// milliseconds
console.info($.now()); // 1443534720087
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Кажется, это работает.

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

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

console.info(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);
            }
};

Код 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.info(ts);

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

console.info(new Date().toISOString());

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

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

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

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

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

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

Date.now(); //return 1495255666921

В MDN это указано ниже:

The Date.now() method returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
Because now() is a static method of Date, you always use it as Date.now().

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

new Date().getTime();

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

Date.now()

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

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

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

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

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())));
}

Представление

Сегодня - 23.04.2020 провожу тестирование выбранных решений. Я тестировал MacOs High Sierra 10.13.6 в Chrome 81.0, Safari 13.1, Firefox 75.0

Выводы

  • Решение Date.now() (E) является самым быстрым в Chrome и Safari и вторым по скорости в Firefox, и это, вероятно, лучший выбор для быстрого кросс-браузерного решения.
  • Решение performance.now() (G), что удивительно, более чем в 100 раз быстрее других решений в Firefox, но самое медленное в Chrome.
  • Решения C, D, F довольно медленные во всех браузерах.

Подробности

Результаты для хром

Вы можете выполнить тест на своей машине ЗДЕСЬ

Код, используемый в тестах, представлен во фрагменте ниже.

function A() {
  return new Date().getTime();
}

function B() {
  return new Date().valueOf();
}

function C() {
  return +new Date();
}

function D() {
  return new Date()*1;
}

function E() {
  return Date.now();
}

function F() {
  return Number(new Date());
}

function G() {
  // this solution returns time counted from loading the page.
  // (and on Chrome it gives better precission)
  return performance.now(); 
}



// TEST

log = (n,f) => console.info(`${n} : ${f()}`);

log('A',A);
log('B',B);
log('C',C);
log('D',D);
log('E',E);
log('F',F);
log('G',G);
This snippet only presents code used in external benchmark

Если это необходимо для ведения журнала, вы можете использовать ISOString

new Date().toISOString()

"2019-05-18T20:02:36.694Z"

Получить отметку времени в JavaScript

In JavaScript, a timestamp is the number of milliseconds that have passed since January 1, 1970.

If you don't intend to support < IE8, you can use

new Date().getTime(); + new Date(); and Date.now();

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

To return the required timestamp

new Date("11/01/2018").getTime()

To get time, month, day, year separately this will work

var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();

есть много способов сделать это.

 Date.now() 
 new Date().getTime() 
 new Date().valueOf()

To get the timestamp in seconds, convert it using:

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

Другие вопросы по теме