#javascript #jquery #node.js #ajax
#javascript #jquery #node.js #ajax
Вопрос:
у меня есть запрос mysql, который возвращает некоторые данные с датами. Когда я запрашиваю запрос ajax, он добавляет временную метку в мой ответ.
Есть ли какой-нибудь способ, чтобы он не добавлял временную метку автоматически в ответы.
jQuery.ajax({
url: "/getdata",
type: "POST",
data: { },
success: function (result, textStatus, jqXHR) {
console.log(result)
}
});
var query = "SELECT SUM(`id`) as `total`,DATE(`log_date`) as `log_date` from `mytable` Group by `log_date`"
Это мой ответ, который добавляется T18:30:00.000Z
к концу дат:
[
RowDataPacket { total: 1, log_date: 2020-11-09T18:30:00.000Z },
RowDataPacket { total: 10, log_date: 2020-11-10T18:30:00.000Z },
]
Спасибо
Комментарии:
1. Можете ли вы включить свой код?
2. @tonoslfx я добавил код..
Ответ №1:
Это не проблема jQuery, это сочетание JS и PHP и то, как вы сохраняете свои значения даты в базе данных.
Объекты даты JS также должны содержать значение времени. Не существует типа данных только для даты. Таким образом, ваш ответ от PHP интерпретируется с возвращаемой вами датой, и 00:00:00
к нему добавляется время для поддержания действительности.
Из вашего профиля я вижу, что вы находитесь в Индии, поэтому смещение вашего часового пояса равно 5:30, поэтому JS предполагает, что дата указана в вашем локальном формате, и пытается преобразовать ее в UTC, вычитая из нее 5:30. Поэтому результирующая дата за 1 день до фактического значения at 16:30:00
.
Чтобы исправить это, я бы посоветовал вам возвращать ваши даты в полном формате ISO8601, включая время и смещение, чтобы не было двусмысленности, которую JS пытается преодолеть.
Комментарии:
1. var newdate = новая дата (‘2020-11-09T18:30:00.000Z’).toISOString().split(«T»)[0]; решил мою проблему
2. Рад, что это помогло вам найти решение