Преобразуйте JavaScript для датирования объекта к mysql формату даты (YYYY-MM-DD)

Я пытаюсь использовать JavaScript для преобразования объекта даты в допустимую mysql дату - что лучший способ состоит в том, чтобы сделать это?

35
задан BrynJ 17 February 2010 в 11:16
поделиться

3 ответа

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

-121--2548657-

Для пользователя необходимо сначала проверить, что очередь не пуста (предоставьте средства для этого).

Тогда вы можете:

  • ничего не проверять и просто вызвать неопределенное поведение (получить доступ к базовым данным, как если бы это было) - это ошибка пользователя
  • проверить и бросить исключение
  • утверждать (результат не определен с NDEBUG)

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

-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 и т.д.).

Предостережение: я только что выбросил это, это полностью непроверено.

32
ответ дан 27 November 2019 в 06:20
поделиться

Взгляните на эту удобную библиотеку для всех ваших потребностей в форматировании даты: http://blog.stevenlevithan.com/archives/date-time -format

0
ответ дан 27 November 2019 в 06:20
поделиться

Небольшая опечатка в первом примере: когда длина дня меньше 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;
}
3
ответ дан 27 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: