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

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

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

Комментарии к вопросу (2)
Решение

Короткая:

+ 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() (с совместимостью shim). Это немного лучше, потому что короче и не создает новый объект Date. Однако, если вам не нужен shim и максимальная совместимость, вы можете использовать метод "old" для получения временной метки в миллисекундах:

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());
Комментарии (16)

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

+new Date

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

Date.now()
Комментарии (16)

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

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

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

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

var milliseconds = new Date().getTime();
Комментарии (4)
var time = Date.now || function() {
  return +new Date;
};

time();
Комментарии (5)

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


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

Date.now() /1000 |0

предупреждение: он может перерыв в 2038 и возвращать отрицательные числа если вы делаете |0 магия. Используйте `Математика.пол () вместо того, чтобы к тому времени

Математика.пол () решение:

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

Альтернативных всезнайка по Дерек 朕會功夫 взято из комментариев ниже этот ответ:

new Date/1e3|0

Полифилл, чтобы получить дату.теперь()` работает:

Чтобы заставить его работать в IE, вы можете сделать это (полифилл от уведомление):

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

какие-либо данные о том, как это будет выглядеть:

новая дата() Чт 29 октября 2015 08:46:30 по GMT+0100 (Mitteleuropäище Зейт ) Новый День(сегодня()) В четверг 29 октября 1970 09:46:30 по GMT+0100 (Mitteleuropäище Зейт )

и GT; конечно он будет ломаться летнее время, но в зависимости от того, что вы

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

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


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

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

В случае, если вы используете jQuery, вы могли бы использовать $.теперь (), как описано в в jQuery'с документами, что делает полифилл устарела, с $.теперь() внутренне делает то же самое: (новую дату).методов gettime()

Если вы просто счастливы о jQuery's версии рассмотреть поддерживают голосование этого ответа так я не нашел ее сам.


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

Предоставляя |, вы говорите переводчик бинарного или операции. Битовые операции требуют абсолютной цифры, которая превращает десятичное число с датой.сейчас() / 1000` в целое число.

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

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


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

Комментарии (6)
var timestamp = Number(new Date()); // current time as number
Комментарии (0)

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

var timestamp = $.now();

<суп>(к тому же она просто реализует (новая дата).методов gettime() выражение)</SUP и ГТ;

Ссылка: http://api.jquery.com/jQuery.now/

Комментарии (11)

в

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

в

Комментарии (7)

Помимо других вариантов, если вы хотите параметра dateformat ИСО, вы можете сделать это напрямую

в

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

в

Комментарии (2)

Просто чтобы добавить вверх, здесь'ы функция, возвращающая строку типа timestamp в 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;
}
Комментарии (3)

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

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

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

Date.now(); //return 1495255666921

В МДН это's упомянутый как ниже:

дата.сейчас() возвращает количество миллисекунд, прошедшее с момента 1 января 1970 00:00:00 по Гринвичу.<БР> ведь сейчас() является статическим методом на сегодняшний день, вы всегда должны использовать его как дата.сейчас().

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

new Date().getTime();
Комментарии (0)

Одна я не'т видел еще

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

Еще один, я не'т видел еще это

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
Комментарии (3)

В Дата.методов gettime()` метод может быть использован с немного подправить:

значение, которое возвращает метод gettime является числом миллисекунд с 1 января 1970 00:00:00 по Гринвичу.

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

(new Date).getTime() / 1000

<суп>дату.метод valueOf () - это эквивалент даты.методов gettime (), которая делает возможным использование арифметических операторов на дата объект для достижения одинаковых результатов. На мой взгляд, такой подход влияет на читабельность.</SUP и ГТ;

Комментарии (3)

Код математика.пол(новая дата().методов gettime() / 1000)может быть сокращен доновая дата / 1E3 | 0`.

Рассмотрим пропустить прямой методов gettime() вызова и использовать символ | 0 в качестве замены математика.пол() Функция. Это's также хорошо помню 1E3-это сокращенный эквивалент для 1000 (прописная е предпочтительнее, чем строчные, указывая 1E3 как константа).

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

в

var ts = new Date / 1E3 | 0;

console.log(ts);

в

Комментарии (8)

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

Комментарии (0)

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

Проверена на macOS высокая Сьерра 10.13.3 на Хром 67.0.3396.99 (64-бит), сафари 11.0.3 (13604.5.6), в Firefox 59.0.2 (64-бит). Ниже на скриншоте я покажу вам результаты быстрый браузер (сафари):

Как я смотрю на дату.теперь()` был быстрый способ получить метку времени для всех трех браузеров. Сафари 19.2 M операций в секунду, Firefox и 16.1 м, хром 7.8 м.

Новая дата()*1был медленным для Chrome (2,8 м) и Firefox (2,6 м). Номер(новая дата()) был медленным для сафари (2,9 м).

Итак, победитель JS код-это дата.теперь()` и быстрый браузер Safari (в 2 раза быстрее, что хром! ).

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

Комментарии (0)

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

в

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

в

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

Комментарии (0)

Вот простая функция, чтобы создать метку времени в формате: ММ/ДД/гг чч:Ми:СС

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())));
}
Комментарии (1)

Для отметки времени с точностью до микросекунд, там'производительность .теперь:

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

Это возможно, например, доходность 1436140826653.139, а дата.теперь только дает1436140826653`.

Комментарии (0)

в

// 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>

в

Комментарии (0)