0

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

11

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

5 ответ(ов)

1

Чтобы получить дату в формате YYYY-MM-DD, вы можете использовать следующий код:

const date = new Date().toJSON().slice(0, 10);
console.log(date); // 2023-10-02 (пример)

Если вам нужно получить дату и время в формате YYYY-MM-DD HH:MM:SS, используйте следующий код:

const datetime = new Date().toJSON().slice(0, 19).replace('T', ' ');
console.log(datetime); // 2023-10-02 12:34:56 (пример)

Имейте в виду, что полученные дата и время будут всегда в зоне UTC.

0

Если вам нужно отформатировать дату в JavaScript и заменить символ "T" пробелом, вы можете использовать метод toISOString() и затем отредактировать строку. Ваш код уже делает это, но есть более компактный способ:

const date = new Date();
const myDateString = date.toISOString().replace("T", " ").slice(0, -5);

console.log(myDateString);

В этом примере мы используем slice(0, -5), чтобы удалить последние 5 символов, что способствует более сжатому написанию кода. Вы можете использовать этот метод для формирования строки даты в нужном вам формате.

0

Вы можете воспользоваться следующим кодом для преобразования даты в формат SQL (YYYY-MM-DD):

function js2Sql(cDate) {
    return cDate.getFullYear()
         + '-'
         + ("0" + (cDate.getMonth() + 1)).slice(-2)
         + '-'
         + ("0" + cDate.getDate()).slice(-2);
}

const currentDate = new Date();
const sqlDate = js2Sql(currentDate);

console.log(sqlDate);

Этот код создает функцию js2Sql, которая принимает объект Date и возвращает строку даты в формате SQL.

  1. cDate.getFullYear() получает год.
  2. cDate.getMonth() + 1 получает месяц (нумерация месяцев начинается с 0, поэтому добавляется 1) и форматирует его с помощью slice(-2), чтобы гарантировать, что получаем двухзначное значение.
  3. cDate.getDate() получает число месяца и также форматируется до двухзначного значения.

В итоге, при вызове js2Sql с текущей датой new Date(), вы получите строку с настоящей датой в нужном формате.

0

Чтобы преобразовать дату JavaScript в формат MySQL, вы можете использовать следующий код:

const currentDate = new Date();
const date = currentDate.toISOString().split("T")[0];

console.log(date);

В этом примере создается новый объект Date, представляющий текущее время. Метод toISOString() формирует строку в формате ISO 8601, а затем с помощью split("T")[0] мы извлекаем только дату (гггг-мм-дд) без времени. Этот формат совместим с MySQL.

0

Кажется, в первом примере есть небольшая опечатка: когда длина дня меньше 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;
}
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь