#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
equals04/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. Операционная система не знает формат метки времени, поэтому библиотека не поможет.