jQuery Ajax автоматически добавляет временную метку к датам

#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. Рад, что это помогло вам найти решение