Как преобразовать строку в дату JavaScript?

#javascript #date #parsing #format #transform

#javascript #Дата #синтаксический анализ #форматировать #преобразовать

Вопрос:

У меня есть следующая строка

 <Date Format="YYYYMMDD">20190304</Date>
  

И мне нужно получить дату из этого формата 20190304 .
Итак, у меня есть этот код для достижения моей цели:

 var str = '20190304';
var date = Date.parse(str.substring(0,4)   '-'   str.substring(4,6)   '-'   str.substring(6,8));
var date2 = new Date(date)
console.log(date2);
  

Результат :

 Mon Mar 04 2019 01:00:00 GMT 0100 (heure normale d’Europe centrale)
  

Проблема в том, что этот код будет работать только в том случае, если формат точно соответствует YYYYMMDD .
К сожалению, мне нужно найти метод, который работает с каждым указанным форматом.

Комментарии:

1. Вы не можете создать код, который будет работать для любого формата. Если я изобрету новый формат, в котором говорится, что qsdf equals 04/03/2019 не смогут это разобрать.

2. Существует множество возможных форматов даты. Вам придется написать код для каждого из них и протестировать его, пока один из них не заработает. Или вы могли бы попробовать создать объект Date напрямую; если это не удается, то вы, по крайней мере, сократили возможное количество альтернативных форматов даты для проверки.

3. Даже тогда вы не смогли бы надежно отличить месяц от дня (мм-дд) или (дд-мм).

4. Вы должны использовать moment.js если возможно

5. откуда вы получаете эти даты? это не может быть в случайном формате при каждом попадании.

Ответ №1:

Вы можете использовать momentjs для своих требований

 var date = moment('20190312', 'YYYYMMDD', true);

console.log(date.format('DD-MM-YYYY'))  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>  

Комментарии:

1. Вам все еще нужно указать формат, в котором находится входная строка

2. Операционная система не знает формат метки времени, поэтому библиотека не поможет.