Я получаю строковую дату из объекта JSON. Мне нужно преобразовать дату
"2018-05-18T04:00:00.000Z" в. May 18 , 2018
Я попытался использовать конструктор Date (), но мне это не удалось.
Я слышал о Intl.DateTimeFormat, но не понимаю документации. Любая помощь и объяснение приветствуются.



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


Для этого вы можете использовать Moment.js.
const date = moment("2018-05-18T04:00:00.000Z").format('DD MMM, YYYY');
console.info(date);
// May 18, 2018
Вот рабочий пример.
Я думаю, что вам нужно сделать:
let date = new Date (строка);
пусть readableDate = date.toDateString ();
Вы должны иметь возможность делать это исключительно с помощью JavaScript, включая синтаксический анализ с помощью Date () и, в зависимости от требований к поддержке вашего браузера, форматировать с помощью toLocaleDateString ().
Второй пример (закомментированный) просто показывает, как он может работать с определенной локалью (в виде строки, хотя это может быть массив таких строк).
function formatDate(string){
var options = { year: 'numeric', month: 'long', day: 'numeric' };
return new Date(string).toLocaleDateString([],options);
}
var dateString = "2018-05-18T04:00:00.000Z"
document.getElementById("results").innerHTML = formatDate(dateString);
// You could also provide specific locale, if needed. For example:
//function formatDate(string){
// var options = { year: 'numeric', month: 'long', day: 'numeric' };
// return new Date(string).toLocaleDateString('en-US',options);
//}<div id = "results"</div>Это хороший ответ. В ответ был указан день, но я думаю, что могу просто исключить его. Ваше объяснение тоже было прямым.
Формат результата выше зависит от языка по умолчанию для реализации, поэтому это может быть не «18 мая 2018 г.».
Вы правильно создали новый объект Date, и JavaScript сохранил правильную дату. Проблема связана с Locale. В следующей строке кода JS создал и сохранил это точное время. Но когда мы запрашиваем вывод из JS, мы обычно получаем именно то, что просим. Из вашего примера, вы запросили дату в зависимости от региона, который, скорее всего, находится в США. Итак, это:
new Date('2018-05-18T04:00:00Z').toLocaleString(); //(or .toString()
даст вам именно тот результат, о котором вы спрашиваете, а именно время UTC, смещенное на другой язык (я оставил время включенным для демонстрации).
С другой стороны, используя это:
new Date('2018-05-18T04:00:00Z').toUTCString();
Даст ожидаемый результат, потому что он устанавливает правильную локаль в формате UTC.
document.querySelector('#a').innerText = new Date('2018-05-18T04:00:00Z').toString();
document.querySelector('#b').innerText = new Date('2018-05-18T04:00:00Z').toUTCString();Incorrect: <p id = "a"></p>
<hr>
Correct: <p id = "b"></p>
Еще мне нравится это решение своей простотой! Голосуйте за ваш вклад!