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

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

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

21.10.2008 09:29:33
Как получить 64-битную метку времени в JS?
Alexander Mills 17.03.2018 01:32:02
@AlexanderMills Поскольку JavaScript не поддерживает 64-битные целые, вам нужно получить два 32-битных целых числа. Задайте другой вопрос.
wizzwizz4 13.04.2018 07:32:05
30 ОТВЕТОВ
РЕШЕНИЕ

Короткие и шикарные:

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

4856
30.05.2018 11:01:20
Другое известное исключение - это node.js. Я пришел сюда из Google, пытаясь сделать то же самое в узле
Milan Babuškov 16.01.2015 17:33:09
Не Date.now() / 1000 | 0пострадает ли проблема 2038 года ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
gengkev 3.05.2015 07:03:17
или даже без использования Math.floor ..~~(Date.now() / 1000)
Matej 19.05.2015 15:23:48
@ MilanBabuškov, но node.js поддерживаетDate.now()
OrangeDog 4.04.2016 13:08:07
Хотя +new Dataон умный, он не читается другими разработчиками. Date.now()понятнее и гарантирует, что все остальные знают, что происходит.
Harry Sadler 29.03.2017 19:06:36
var time = Date.now || function() {
  return +new Date;
};

time();
146
16.12.2014 13:31:37
Почему || оператор? Date.now () доступен не во всех браузерах?
Chris Noe 22.10.2008 00:58:58
Date.now () из JavaScript 1.5 и не поддерживается в IE 8.
Søren Løvborg 14.07.2011 18:54:59
Движки, которые не были обновлены для поддержки метода Date.now, могут обойти его отсутствие, используя следующий shim: if (! Date.now) {Date.now = function now () {return + (new Date); }; }
Per Quested Aronsson 4.10.2012 07:21:16
или(Date.now||function(){return +new Date})();
user5490177 17.09.2019 10:47:12
var timestamp = Number(new Date()); // current time as number
88
21.10.2008 13:00:22

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

46
24.06.2016 18:48:56
Это равняется +new Date.. :)
19h 1.11.2011 20:01:22
просто сделайDate.now()
Orlando 20.05.2013 22:12:36
@ Орландо см. Другие ответы, проблема с now () - поддержка браузера
Christophe 14.09.2013 16:49:01
@Christophe просто выполните простое полифиллинг, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Orlando 14.09.2013 16:52:02
@ Орландо точно, не просто делать Date.now ()
Christophe 14.09.2013 16:53:36
time = Math.round(((new Date()).getTime()-Date.UTC(1970,0,1))/1000);
-20
4.03.2010 06:53:01
Это не верно. Метод getTime () уже возвращает количество миллисекунд с начала эпохи UNIX, так что это вычисление фактически испортит ситуацию.
Skone 16.06.2011 20:06:36
@ Скорее всего, ничего не испорчено. всегдаDate.UTC(1970,0,1) будет иметь значение 0, независимо от того, в каком часовом поясе находится пользователь. тем не менее, я бы сказал, что это плохой ответ из-за этого.
Kip 29.08.2011 17:17:56
@Kip Хороший вопрос. Мы оба получаем одно и то же, но дополнительная арифметика здесь не нужна.
Skone 21.09.2011 16:00:29
@Kip - если кто-то когда-нибудь станет глупым и решит, что Эпоху нужно «изменить» (слово «сломано» было бы подходящим словом ...), это сработало бы. К счастью, никто никогда не станет таким глупым.
Julie in Austin 4.07.2012 15:09:27
Если эпоха меняется, определение Unix Timestamp меняется. Это делает вышеуказанный код обратно совместимым, но не работает :)
Peter 13.04.2013 13:22:11

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

+new Date

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

Date.now()
509
30.11.2017 19:23:44
Этот вариант плохая идея. Его легко не заметить, он выглядит как опечатка и в действительности зависит от языкового побочного эффекта. Я вижу плохой код.
inanutshellus 29.10.2012 15:51:23
@ Билли Насколько я помню, я вычислил временную метку в двух предложенных решениях по 1M раз каждое и вычислил среднее время выполнения. Я запускал его в Firefox и Chrome, причем getTime работал быстрее в обоих браузерах. Тем не менее, даже если бы (немного) медленнее я бы выбрал new Date().getTime(). К счастью для меня, более быстрое решение - это уже разборчивое решение!
inanutshellus 8.07.2013 12:44:19
Согласился с @ FabrícioMatté. Поведение унарного оператора может быть не элементарным, но если вы не разбираетесь в нем, не ожидайте, что сможете эффективно работать во многих командах.
Jason T Featheringham 18.07.2013 01:58:54
@Niklaus Это потому, что вы соединяете его с другой строкой. В таком случае new Date().toString()называется.
kirb 2.10.2013 11:50:18
из любопытства, что +делает оператор, чтобы он выглядел как строка?
zadubz 19.12.2014 10:47:52

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

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

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

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

var milliseconds = new Date().getTime();
273
30.05.2011 21:12:15
PHP должен нормально работать с миллисекундами, так как он сам использует их с функцией microtime ().
Nico Burns 10.09.2011 00:34:04
Хотя функция microtime () присутствует, большинство связанных с временем функций в php ожидают, что отметка времени будет в секундах, а не в миллисекундах. Более того, microtime () возвращает число с плавающей запятой (если вы передаете true), где десятичная часть - это доли секунды (с точностью до микросекунды), а newDate (). GetTime () возвращает целое число, в котором он просто считает миллисекунды, так как эпоха. Например, (php), если бы вы вызывали floor (microtime (true)), это фактически было бы то же самое, что и time () вызова в секундах, а не в микро- или миллисекундах. Деление на 1000, как указано выше, является самым простым решением для этого.
gregghz 2.05.2012 21:32:39
Вместо круглых используйте пол. 700 мс все еще не целая секунда
Anagmate 10.02.2014 08:36:54
Unix timestampпротив Seconds since the Epoch. Разве эти двое не должны означать одно и то же?
Mudiaga Ejenavi 3.10.2019 07:27:23

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

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

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

(new Date).getTime() / 1000

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

27
7.05.2015 09:10:28
Вам не нужны скобки:new Date().getTime() / 1000
Ry-♦ 30.05.2012 05:01:49
Они вам не нужны, но они делают код более читабельным (ИМХО). Вопрос вкуса, я думаю.
johndodo 18.09.2012 07:10:27
Вам даже не нужно ()после того, как new Dateи .getTime()так /будет отбрасывать объект Date в число так или иначе.
Derek 朕會功夫 15.11.2014 02:12:34

Я предоставляю несколько решений с описаниями в этом ответе. Не стесняйтесь задавать вопросы, если что-то непонятно
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

130
4.04.2018 15:46:05
| 0 похож на Math.floor (), так как это битовая операция (которая не работает с плавающей точкой). обычно это даже быстрее, чем Math.floor (), поскольку это не вызов функции, это собственный оператор javascript.
GottZ 24.08.2012 06:53:27
Web_Designer 16.03.2013 02:36:33
@ Кристоф, почему ты так думаешь? из-за IE исправить? кроме той части это довольно просто и настраиваемо, я думаю.
GottZ 16.09.2013 09:58:00
полифилы / прокладки не сложны. Они являются результатом необходимости поддерживать 9 различных версий браузеров, и отрасль решает выбрать, какие стандарты они принимают, а какие просто составляют.
rlemon 24.09.2013 20:35:38
Для справки самое компактное, что вы можете получить new Date/1e3|0.
Derek 朕會功夫 15.11.2014 02:11:08

Просто добавим, вот функция для возврата строки метки времени в 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;
}
41
21.09.2012 19:46:55
ОП запрашивает целочисленную временную метку; это строковое представление времени.
Brad Koch 10.10.2012 19:36:46
«похоже на временную метку Unix, то есть одно число, представляющее текущее время»
Brad Koch 16.01.2013 19:44:18
У меня был код для отображения времени, но в некоторых частях Австралии была указана полная дата, этот скрипт помог мне разбить его и отобразить правильно. (+1 за это)
Syfer 7.02.2018 00:27:35

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

var timestamp = $.now();

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

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

61
15.03.2013 14:19:22
jQuery также позаботится о любых проблемах совместимости между браузерами с различными API-интерфейсами JavaScript.
Henry Heleine 9.12.2014 21:55:52
@ VisioN Я искал способ делать отметки времени в Node.js. Я нашел вопрос javascript в stackoverflow и получил ответ в jQuery, который не помогает. Javascript и jQuery - это две вещи. Если мы дадим ответы на каждую инфраструктуру javascript, мы получим, возможно, бесконечное число ответов, что противоречит философии Q / A в stackoverflow. Также: i.stack.imgur.com/Ledgt.gif : D
Pierre Arlaud 28.01.2015 08:38:39
@VisioN Кто сказал, что JavaScript должен использоваться в браузере?
Pierre Arlaud 28.01.2015 09:03:15
@PierreArlaud А кто сказал, что этот вопрос касается только NodeJS?
VisioN 15.07.2015 08:27:29
@KingRider В этом нет необходимости parseInt, поскольку полученное значение всегда будет a Number.
VisioN 19.12.2016 14:05:32

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

currentTime = Date.now() || +new Date()
16
9.05.2013 06:53:40
(Перефразируя мой комментарий) Ваш код имеет проблему: он выполняет метод Date.now вместо того, чтобы сначала проверять его поддержку. В старых браузерах Date.now не является ошибкой функции .
Salman A 7.05.2015 09:18:53
Может быть, лучше альтернативы можно было бы использовать тройной оператор , чтобы утверждать , что на Date.nowсамом деле существует (и функции), прежде чем пытаться вызвать его: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().
mgthomas99 4.04.2018 14:54:39

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

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
3.07.2013 15:10:49
@ b123400 - Вот версия Лиспа: (new (chain (-date) (to-i-s-o-string))).
Inaimathi 24.08.2013 03:17:17

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

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
14
1.07.2013 06:47:59

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

var timeStamp=event.timestamp || new Date().getTime();
8
26.10.2013 03:51:22
Знаешь откуда event. Вам нужно дать лучшее объяснение того, как вы решаете проблему, вместо того, чтобы писать ответ. Пожалуйста!
alexventuraio 22.09.2016 22:54:34
Я собирался написать новый объект Date (). Вы можете консоль журнала (новый Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ()
sg28 18.01.2018 00:37:46

Один я еще не видел

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

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

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
29
4.04.2018 16:10:50
Date.now() /1000 |0делает то же самое и получил ответ раньше
GottZ 17.12.2014 13:55:34
хорошо. я уверен , отредактированный Math.floor()в него , но только , чтобы понять , что он имеет тот же эффект , как |0. Я не хотел причинить тебе боль или что-то еще. Я просто хотел сказать вам, что ваш ответ каким-то образом уже существует. Глядя на все приведенные ответы, есть те, которые каким-то образом замечают слово.
GottZ 21.12.2014 14:16:19
Я думаю, что импортировать всю библиотеку Lodash для использования _.now()немного излишне. Я бы рекомендовал импортировать только те функциональные возможности Lodash, которые вам нужны (в данном случае _.now () в NPM ), но даже они отказались от своего пакета в пользу только использования Date.now().
mgthomas99 4.04.2018 15:03:18

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

timestamp : parseInt(new Date().getTime()/1000, 10)
7
24.04.2014 06:46:40
Еще короче: new Date().getTime()/1000|0но он медленный и грязный
EaterOfCode 26.09.2014 13:53:17
Я собирался написать новый объект Date (). Вы можете консоль журнала (новый Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ()
sg28 18.01.2018 00:37:52

Вот еще одно решение для генерации метки времени в 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);
1
16.12.2014 16:08:43

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

Смотрите: http://momentjs.com/docs/#/displaying/unix-timestamp/

moment().unix();
10
6.03.2015 00:33:36
Обратите внимание, что это дает количество секунд (не миллисекунд) с начала UNIX. Если вы хотите миллисекунды, используйте moment().valueOf(). Смотри мой ответ.
FullStack 14.07.2015 08:33:29

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

Вот пример:

var date = new Date();
var timestamp = +date;
14
11.03.2015 09:52:48
Я собирался написать новый объект Date (). Вы можете консоль журнала (новый Date ()), а затем просмотреть связанные методы в новом объекте / функции Date ()
sg28 18.01.2018 00:38:17

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

3
26.03.2015 19:47:12
Почему понизить? ~~такая же parseInt.. хорошая плохая школа
KingRider 31.10.2016 14:38:49

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

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

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

4
27.03.2015 11:48:54

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

var timestamp = _.now(); // in milliseconds
12
30.03.2015 08:40:23
var d = new Date();
console.log(d.valueOf()); 
4
13.04.2015 08:29:01
Я собирался написать новый объект Date (). Вы можете консоль журнала (новый Date ()), а затем просмотреть связанные методы в новом объекте / функции Date (). новый метод Date (). getTime () даст вам время в формате EPOCH, которое можно интерпретировать при необходимости
sg28 18.01.2018 00:38:32

Если вам нужен базовый способ создания метки времени в 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
29.05.2015 13:40:52

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

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

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

21
6.07.2015 00:01:55

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

22
1.10.2015 07:28:33

// 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
24.06.2016 18:47:59

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

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
9.10.2015 02:03:25

Код 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);

25
27.03.2018 06:08:05
@dchest "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; 37 -14 = 23 байта;
Valentin Podkamennyi 24.09.2016 03:39:05
@MatthieuCharbonnier Что именно не читается? Знак деления, 1E3, труба или ноль? Пожалуйста, посмотрите фрагмент кода в моем ответе выше.
Valentin Podkamennyi 27.10.2017 03:03:20
@Valentin Вы минимизируете / усложняете простой код практически без пользы. Я не вижу смысла делать это. Мы не на Code Golf!
Matthieu Charbonnier 29.10.2017 07:58:21
@ MatthieuCharbonnier, тут нет ничего сложного, только основной синтаксис и операторы. Главное - написать короткий, понятный и понятный код.
Valentin Podkamennyi 30.10.2017 18:17:17
@Valentin Пожалуйста, объясните мне, как замена Math.floor()на |0делает этот код "ясным и понятным". Объясните мне, в чем смысл сохранять 1 байт путем замены 1000на 1E3. Это нелепо. Я вижу плохой код.
Matthieu Charbonnier 31.10.2017 08:46:12