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


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

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


3302


источник


Ответы:


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


4080



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

+new Date

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

Date.now()

424



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

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

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

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

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

227



var time = Date.now || function() {
  return +new Date;
};

time();

125



I provide multiple solutions with descriptions in this answer. Feel free to ask questions if anything is unclear
PS: sadly someone merged this to the top answer without giving credit.


Quick and dirty solution:

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


94



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

68



jQuery provides its own method to get the timestamp:

var timestamp = $.now();

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

REF: http://api.jquery.com/jQuery.now/


48



Just to add up, here's a function to return a timestamp string in Javascript. Example: 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;
}

35



console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


33



In addition to the other options, if you want a dateformat ISO, you get can get it directly

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


27



One I haven't seen yet

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

Another one I haven't seen yet is

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

21



The Date.getTime() method can be used with a little tweak:

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

Divide the result by 1000 to get the Unix timestamp, floor if necessary:

(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.


20