Преобразование объекта даты JavaScript в формат даты MySQL (YYYY-MM-DD)
Я пытаюсь использовать JavaScript для преобразования объекта даты в корректный формат даты для MySQL. Какой наилучший способ сделать это?
5 ответ(ов)
Чтобы получить дату в формате 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.
Если вам нужно отформатировать дату в JavaScript и заменить символ "T" пробелом, вы можете использовать метод toISOString()
и затем отредактировать строку. Ваш код уже делает это, но есть более компактный способ:
const date = new Date();
const myDateString = date.toISOString().replace("T", " ").slice(0, -5);
console.log(myDateString);
В этом примере мы используем slice(0, -5)
, чтобы удалить последние 5 символов, что способствует более сжатому написанию кода. Вы можете использовать этот метод для формирования строки даты в нужном вам формате.
Вы можете воспользоваться следующим кодом для преобразования даты в формат 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.
cDate.getFullYear()
получает год.cDate.getMonth() + 1
получает месяц (нумерация месяцев начинается с 0, поэтому добавляется 1) и форматирует его с помощьюslice(-2)
, чтобы гарантировать, что получаем двухзначное значение.cDate.getDate()
получает число месяца и также форматируется до двухзначного значения.
В итоге, при вызове js2Sql
с текущей датой new Date()
, вы получите строку с настоящей датой в нужном формате.
Чтобы преобразовать дату JavaScript в формат MySQL, вы можете использовать следующий код:
const currentDate = new Date();
const date = currentDate.toISOString().split("T")[0];
console.log(date);
В этом примере создается новый объект Date
, представляющий текущее время. Метод toISOString()
формирует строку в формате ISO 8601, а затем с помощью split("T")[0]
мы извлекаем только дату (гггг-мм-дд) без времени. Этот формат совместим с MySQL.
Кажется, в первом примере есть небольшая опечатка: когда длина дня меньше 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;
}
Преобразование Unix-метки времени в формат времени в JavaScript
Где найти документацию по форматированию даты в JavaScript?
Как добавить дни к дате?
Как преобразовать дату в UTC?
Как вычислить количество дней между двумя датами?