Я создал веб-сервис, который возвращает строку JSON, в одном из них есть поле даты:
{
"nyear":2015,
"nperiod":12,
"ddelivtime":1273474800000,
"vpoitem":"10",
"iversion":1,
"vdsnumber":null,
"isequence":null
}
В частности, ddelivtime, который возвращается как отметка времени, имеет значение 2010-05-10.
Однако, когда я обработал JSON с помощью JSON.parse, дата стала 2010-04-10.
Есть ли что-то странное, из-за чего дата JSON анализируется на один месяц меньше? Потому что из-за этого весь мой JSON теперь анализируется неправильно.
JavaScript использует месяцы с отсчетом от нуля, это то, что вы видите?
Как получить это «свидание»? Это строка?
«Однако, когда я обработал JSON с помощью JSON.parse, дата стала 2010-04-10» - не будет. Для JSON.parse это просто число. Вы, должно быть, делаете что-то еще. Предоставьте минимальный воспроизводимый пример
Это произошло из-за месяцев с нулевым отсчетом, о которых я почти не подозреваю. Большое спасибо. И всем, кто проголосовал против этого вопроса, спасибо, что обескуражили меня.
@Quentin Я не делаю "ничего другого". Я заявил, что эти «числа» являются отметкой времени.
@NicolasTakashi, к сожалению, примеры, приведенные в статьях, представляют собой даты, которые не указаны в формате временной метки, но очень хорошая информация, в любом случае спасибо :)
Он имеет значение 1273474800000, а не 2010-05-10 или 2010-04-10.
@Liam это дата на Java. Возвращается как отметка времени в JSON.
@Quentin ... вот почему я хотел разобрать это в чертовом формате даты. Он ДОЛЖЕН вернуться 10 мая 2010 г. 14:00:00
Нет ... вы неправильно поняли, 2010-04-10 - это строковое представление даты, а не дата. Как получить это строковое значение?
@cipley - разбор даст вам номер. Если вы хотите преобразовать это число в дату, вам нужно что-то сделать. Поскольку вы сказали, что получаете 2010-05-10, вы, по-видимому, что-то делаете, но не сказали нам, что именно. Вы должны предоставить минимальный воспроизводимый пример.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В JavaScript месяцы отсчитываются от нуля. Так что просто вставьте в него значение месяца и сделайте плюс один, как показано ниже:
var data = {
"nyear":2015,
"nperiod":12,
"ddelivtime":1273474800000,
"vpoitem":"10",
"iversion":1,
"vdsnumber":null,
"isequence":null
}
var d = new Date(data.ddelivtime);
var formatDate = d.getFullYear()+ '-' + (d.getMonth()+1) + '-' + d.getDate();
console.info(formatDate);Я не знал об этом. Спасибо за просветление
Посмотрите этот пост, он может вам помочь. weblog.west-wind.com/posts/2014/Jan/06/…