Javascript: дата JSON.parse возвращает неправильную дату

Я создал веб-сервис, который возвращает строку 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 теперь анализируется неправильно.

Посмотрите этот пост, он может вам помочь. weblog.west-wind.com/posts/2014/Jan/06/…

Nicolas Takashi 29.05.2018 12:26

JavaScript использует месяцы с отсчетом от нуля, это то, что вы видите?

jonrsharpe 29.05.2018 12:27

Как получить это «свидание»? Это строка?

Liam 29.05.2018 12:37

«Однако, когда я обработал JSON с помощью JSON.parse, дата стала 2010-04-10» - не будет. Для JSON.parse это просто число. Вы, должно быть, делаете что-то еще. Предоставьте минимальный воспроизводимый пример

Quentin 29.05.2018 12:38

Это произошло из-за месяцев с нулевым отсчетом, о которых я почти не подозреваю. Большое спасибо. И всем, кто проголосовал против этого вопроса, спасибо, что обескуражили меня.

cipley 29.05.2018 12:40

@Quentin Я не делаю "ничего другого". Я заявил, что эти «числа» являются отметкой времени.

cipley 29.05.2018 12:41

@NicolasTakashi, к сожалению, примеры, приведенные в статьях, представляют собой даты, которые не указаны в формате временной метки, но очень хорошая информация, в любом случае спасибо :)

cipley 29.05.2018 12:42

Он имеет значение 1273474800000, а не 2010-05-10 или 2010-04-10.

Quentin 29.05.2018 12:43

@Liam это дата на Java. Возвращается как отметка времени в JSON.

cipley 29.05.2018 12:43

@Quentin ... вот почему я хотел разобрать это в чертовом формате даты. Он ДОЛЖЕН вернуться 10 мая 2010 г. 14:00:00

cipley 29.05.2018 12:45

Нет ... вы неправильно поняли, 2010-04-10 - это строковое представление даты, а не дата. Как получить это строковое значение?

Liam 29.05.2018 12:47

@cipley - разбор даст вам номер. Если вы хотите преобразовать это число в дату, вам нужно что-то сделать. Поскольку вы сказали, что получаете 2010-05-10, вы, по-видимому, что-то делаете, но не сказали нам, что именно. Вы должны предоставить минимальный воспроизводимый пример.

Quentin 29.05.2018 12:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
12
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В 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);

Я не знал об этом. Спасибо за просветление

cipley 29.05.2018 12:46

Другие вопросы по теме