Дополнительно
Как получить временную метку в JavaScript?
Как получить временную метку в JavaScript?
Что-то похожее на Unix timestamp, то есть одно число, которое представляет текущее время и дату. Либо в виде числа, либо в виде строки.
3826
20
Короткая:
Унарный оператор типа
plus
вызывает методvalueOf
в объектеDate
, и он возвращает временную метку (без каких-либо изменений).Детали:
Почти во всех современных браузерах вы можете использовать
Date.now()
для получения временной метки UTC в миллисекундах; заметным исключением является IE8 и более ранние версии (см. таблицу совместимости).Однако для этого можно легко сделать шим:
Чтобы получить метку времени в секундах, вы можете использовать:
Или, в качестве альтернативы, вы можете использовать:
Что будет немного быстрее, но и менее читабельно (также см. этот ответ).
Я бы рекомендовал использовать
Date.now()
(с совместимостью shim). Это немного лучше, потому что короче и не создает новый объектDate
. Однако, если вам не нужен shim и максимальная совместимость, вы можете использовать метод "old" для получения временной метки в миллисекундах:Которые затем можно преобразовать в секунды следующим образом:
Вы также можете использовать метод
valueOf
, который мы показали выше:Временная метка в миллисекундах.
Мне нравится этот, потому что он маленький:
Мне также нравится это, потому что это такая же короткая и совместим с современными браузерами, и более 500 человек проголосовали, что лучше:
JavaScript работает с количество миллисекунд с начала эпохи, тогда как большинство других языков работают с секундами. Вы могли бы работать с миллисекундах, но как только вы передаете значение, скажем на PHP, родной функции PHP, вероятно, не удастся. Поэтому, чтобы быть уверенным, я всегда использую секунды, а не миллисекунды.
Это даст вам метку времени Unix (в секундах):
Это даст вам миллисекунд с начала эпохи (не временная метка Unix):
Я предоставить несколько решений с описаниями в этом ответе. Не стесняйтесь задавать вопросы, если что-то непонятно ЗЫ: к сожалению, кто-то слил это ответ, не давая кредит.
Быстрое и грязное решение:
Математика.пол () решение:
Альтернативных всезнайка по Дерек 朕會功夫 взято из комментариев ниже этот ответ:
Полифилл, чтобы получить дату.теперь()` работает:
Чтобы заставить его работать в IE, вы можете сделать это (полифилл от уведомление):
Если вам не безразлична год / день недели / время летнее время можно ее сорвать и использовать это после 2038:
и GT; конечно он будет ломаться летнее время, но в зависимости от того, что вы
Если вы просто хотите знать относительное время от точки, когда код был пробежать первый вы могли бы использовать что-то вроде этого:
В случае, если вы используете jQuery, вы могли бы использовать
$.теперь ()
, как описано в в jQuery'с документами, что делает полифилл устарела, с$.теперь()
внутренне делает то же самое:(новую дату).методов gettime()
Если вы просто счастливы о jQuery's версии рассмотреть поддерживают голосование этого ответа так я не нашел ее сам.
Теперь малюсенькое объяснение, что
|0
делает:Предоставляя
|
, вы говорите переводчик бинарного или операции. Битовые операции требуют абсолютной цифры, которая превращает десятичное число с датой.сейчас() / 1000` в целое число.Во время этого преобразования, десятичные дроби удаляются, в результате такой же результат, как с помощью математики.пол ()`, но используя меньше кода.
Для получения дополнительной информации о дате.теперь пройдите по этой ссылке:
дата.теперь()
@ МДНна jQuery обеспечивает собственный метод, чтобы получить метку времени:
<суп>(к тому же она просто реализует
(новая дата).методов gettime()
выражение)</SUP и ГТ;Ссылка: http://api.jquery.com/jQuery.now/
в
в
Помимо других вариантов, если вы хотите параметра dateformat ИСО, вы можете сделать это напрямую
в
в
Просто чтобы добавить вверх, здесь'ы функция, возвращающая строку типа timestamp в JavaScript. Пример: 15:06:38 вечера
Дата, а собственный объект в JavaScript, как мы получим все данные о времени.
Просто будьте осторожны в JavaScript отметка зависит от клиент установить компьютер, так он's не 100% точный штамп времени. Чтобы получить лучший результат, вы должны получить timestamp из серверные.
В любом случае, мой предпочтительный способ-использовать ваниль. Это обычный способ сделать это в JavaScript:
В МДН это's упомянутый как ниже:
Если вы используете версию ниже в ES5, дата.теперь();` не работает, и вы должны использовать:
Одна я не'т видел еще
Еще один, я не'т видел еще это
В Дата.методов gettime()` метод может быть использован с немного подправить:
Разделите результат на 1000, чтобы получить метку времени Unix,
пол
при необходимости:<суп>дату.метод valueOf () - это эквивалент даты.методов gettime (), которая делает возможным использование арифметических операторов на дата объект для достижения одинаковых результатов. На мой взгляд, такой подход влияет на читабельность.</SUP и ГТ;
Код математика.пол(новая дата().методов gettime() / 1000)
может быть сокращен до
новая дата / 1E3 | 0`.Рассмотрим пропустить прямой
методов gettime()
вызова и использовать символ| 0
в качестве заменыматематика.пол()
Функция. Это's также хорошо помню 1E3-это сокращенный эквивалент для1000
(прописная е предпочтительнее, чем строчные, указывая1E3
как константа).В результате вы получите следующее:
в
в
Я настоятельно рекомендую использовать
moment.js
. Чтобы получить количество миллисекунд, прошедших с эпохи Unix, делатьЧтобы получить количество секунд с эпохи Unix, делать
Вы также можете конвертировать раза вот так:
Я делаю это все время. Не каламбур.
Использовать moment.js в браузере:
Для более подробной информации, в том числе другими способами установки и использования MomentJS, увидеть их документы
Сегодня - 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.
Вы можете только использовать
в
в
чтобы получить текущую метку времени. Не нужно делать ничего лишнего.
Вот простая функция, чтобы создать метку времени в формате: ММ/ДД/гг чч:Ми:СС
Для отметки времени с точностью до микросекунд, там'производительность
.теперь
:Это возможно, например, доходность
1436140826653.139
, адата.теперь только дает
1436140826653`.в
в