Преобразование строковой даты в react / javascript

Я получаю строковую дату из объекта JSON. Мне нужно преобразовать дату

"2018-05-18T04:00:00.000Z" в. May 18 , 2018

Я попытался использовать конструктор Date (), но мне это не удалось.

Я слышал о Intl.DateTimeFormat, но не понимаю документации. Любая помощь и объяснение приветствуются.

Поведение ключевого слова "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) для оценки ваших знаний,...
12
0
26 738
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Для этого вы можете использовать Moment.js.

const date = moment("2018-05-18T04:00:00.000Z").format('DD MMM, YYYY');
console.info(date);
// May 18, 2018

Вот рабочий пример.

Еще мне нравится это решение своей простотой! Голосуйте за ваш вклад!

Tung 17.05.2020 22:55

Я думаю, что вам нужно сделать:

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>

Это хороший ответ. В ответ был указан день, но я думаю, что могу просто исключить его. Ваше объяснение тоже было прямым.

bruce 21.05.2018 03:47

Формат результата выше зависит от языка по умолчанию для реализации, поэтому это может быть не «18 мая 2018 г.».

RobG 21.05.2018 10:44

Вы правильно создали новый объект 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>

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