Я пытаюсь использовать JavaScript для преобразования объекта даты в допустимую mysql дату - что лучший способ состоит в том, чтобы сделать это?
Наиболее вероятной причиной является то, что обработчик двойного щелчка устанавливается несколько раз, поэтому каждый экземпляр обработчика вызывается один раз для каждого щелчка.
-121--2548657-Для пользователя необходимо сначала проверить, что очередь не пуста (предоставьте средства для этого).
Тогда вы можете:
Проверка и затем вызвать неопределенное поведение (возвращая произвольное значение) - это худшее, что нужно сделать. Получаются как накладные расходы времени выполнения проверки, так и вызывающий не мудрее, так как результат по-прежнему не определен.
-121--3429915-Возможно, лучше всего использовать библиотеку, такую как Date.js (хотя она не поддерживается в течение многих лет) или Moment.js .
Но чтобы сделать это вручную, можно использовать Date # getFireYear ()
, Date # getMonth ()
(начинается с 0 = январь, поэтому, вероятно, нужно + 1) и Date # getDate ()
(день месяца) Просто выведите месяц и день на два символа, например:
(function() {
Date.prototype.toYMD = Date_toYMD;
function Date_toYMD() {
var year, month, day;
year = String(this.getFullYear());
month = String(this.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(this.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
})();
Использование:
var dt = new Date();
var str = dt.toYMD();
Обратите внимание, что функция имеет имя, которое полезно для отладки, но из-за анонимной функции определения области не происходит загрязнения глобального пространства имен.
Используется местное время; для UTC просто используйте версии UTC ( getUTCFullYear
и т.д.).
Предостережение: я только что выбросил это, это полностью непроверено.
Взгляните на эту удобную библиотеку для всех ваших потребностей в форматировании даты: http://blog.stevenlevithan.com/archives/date-time -format
Небольшая опечатка в первом примере: когда длина дня меньше 1, к результату добавляется месяц вместо дня.
Отлично работает, если вы измените:
if (day.length == 1) {
day = "0" + month;
}
на
if (day.length == 1) {
day = "0" + day;
}
Спасибо за размещение этого скрипта.
Исправленная функция выглядит так:
Date.prototype.toYMD = Date_toYMD;
function Date_toYMD() {
var year, month, day;
year = String(this.getFullYear());
month = String(this.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(this.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}