Форматировать каждую дату в массиве дат

У меня есть следующий массив дат. Как я могу отформатировать каждую дату в этом массиве как «мм/дд/гггг»?

Я пытаюсь что-то подобное, но форматирование неправильное. const formattedDates = this.displayEffectiveDate.map(date => new Date(date));

[ "2024-02-29T00:00:00", "2024-03-31T00:00:00" ]

Вы сопоставляете новую дату, а не форматируете ее stackoverflow.com/questions/3552461/…

JollyJoker 24.07.2024 15:51
[ 2024-02-29T00:00:00, 2024-03-31T00:00:00 ] недействителен JSON или JavaScript. «неправильно форматирует» на самом деле не говорит нам о том, что происходит, пожалуйста, будьте как можно подробнее в вопросе.
phuzi 24.07.2024 15:51

Проверьте toLocaleString с локалью «us-en».

mykaf 24.07.2024 15:52

Это может быть просто манипуляция строками. [ "2024-02-29T00:00:00", "2024-03-31T00:00:00" ].map(s => s.replace(/(....)-(..)-(..).*/, "$2/$3/$1")); делает то, что вам нужно?

trincot 24.07.2024 15:54
Поведение ключевого слова "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) для оценки ваших знаний,...
3
4
63
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы можете использовать toLocaleDateString(), чтобы получить результат в свою пользу.

См. код ниже:

const displayEffectiveDate = [ "2024-02-29T00:00:00", "2024-03-31T00:00:00" ];

const formattedDates = displayEffectiveDate.map(date => {
    const formattedDate = new Date(date).toLocaleDateString('en-US', {
        month: '2-digit',
        day: '2-digit',
        year: 'numeric'
    });
    return formattedDate;
});

console.info(JSON.stringify(formattedDates));

Ах, ответ на самом деле форматирует даты, а не манипулирует строками. Обратите внимание на комментарий о повторном использовании объекта формата здесь, если производительность имеет значение.

JollyJoker 29.07.2024 13:09

Вы можете использовать объект Date, а затем использовать для этого метод следующим образом:

function dateToMDY(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return (m<=9 ? '0' + m : m) + '/' + (d <= 9 ? '0' + d : d) + "/" + y;
}

var dates = [ "2024-02-29T00:00:00", "2024-03-31T00:00:00" ];
console.info(dates.map(d => dateToMDY(new Date(d))));
Ответ принят как подходящий

Мне кажется, что это всего лишь вопрос манипуляций со строками, для которых не нужно создавать объекты Date:

const dates = [ "2024-02-29T00:00:00", "2024-03-31T00:00:00" ];
const result = dates.map(s => s.replace(/(....)-(..)-(..).*/, "$2/$3/$1"));

console.info(result);

Попробуй это

let array = [ '2024-02-29T00:00:00', '2024-03-31T00:00:00' ]

for(let i = 0; i<array.length; i++){

     const a = array[i].split('-', 3)

     const day = a[2].split('T', 1)[0]
     const month =  a[1]
     const year = a[0]

     const mmddyyyy = `${month}-${day}-${year}`

     array[i] = mmddyyyy

}

console.info(array)

Если ваш displayEffectiveDate выглядит так:

this.displayEffectiveDate = ["2024-02-29T00:00:00", "2024-03-31T00:00:00"];

Вы можете создать новый объект Date из строки даты ISO 8601.

d.getMonth() + 1 чтобы получить месяц

d.getDate() на день

d.getFullYear() на год

String(...).padStart(2, '0') чтобы месяц и день всегда были двузначными

Это должно выглядеть так:

this.displayEffectiveDate = ["2024-02-29T00:00:00", "2024-03-31T00:00:00"];

const formattedDates = this.displayEffectiveDate.map(date => {
  const d = new Date(date);
  const month = String(d.getMonth() + 1).padStart(2, '0'); // Months are 0-indexed, so we add 1
  const day = String(d.getDate()).padStart(2, '0');
  const year = d.getFullYear();
  return `${month}/${day}/${year}`;
});

Результат будет [ '02/29/2024', '03/31/2024' ]

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