Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Распознать дату в строке (https://javascript.ru/forum/dom-window/82025-raspoznat-datu-v-stroke.html)

DDim1000 03.03.2021 12:40

Распознать дату в строке
 
Здравствуйте!
Есть строка: "Поезд №1375, прибывает 14 февраля 2021 в 08:20".
Вопрос: Можно ли распознать дату в строке, и привести к такому виду: 14.02.2021 ?

NeoN 03.03.2021 12:50

Если сообщение всегда по одному шаблону, то можно выдернуть регуляркой 14 февраля 2021 отсюда
например, вот такой:
"Поезд №1375, прибывает 14 февраля 2021 в 08:20".match(/(\d{1,2})\s+(\D+)\s+(\d{4})/)

Получим отдельно число, месяц, год. Месяц приводим к нужном числу. И вуаля! Склеиваем все вместе в нужную строку даты.

рони 03.03.2021 13:37

DDim1000,
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
alert(moment.utc(str.split(',').reverse(), 'll').format('DD.MM.YYYY'))
  </script>

DDim1000 03.03.2021 14:15

Цитата:

Сообщение от рони (Сообщение 534255)
DDim1000,
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
alert(moment.utc(str.split(',').reverse(), 'll').format('DD.MM.YYYY'))
  </script>

Второй подключенный скрипт, это что?

рони 03.03.2021 14:39

DDim1000,
это русский язык для строки 4

DDim1000 03.03.2021 18:15

Цитата:

Сообщение от NeoN (Сообщение 534254)
Если сообщение всегда по одному шаблону, то можно выдернуть регуляркой 14 февраля 2021 отсюда
например, вот такой:
"Поезд №1375, прибывает 14 февраля 2021 в 08:20".match(/(\d{1,2})\s+(\D+)\s+(\d{4})/)

Получим отдельно число, месяц, год. Месяц приводим к нужном числу. И вуаля! Склеиваем все вместе в нужную строку даты.

Подскажите, пожалуйста, как сделать такую же регулярку для номера поезда?

рони 03.03.2021 18:29

DDim1000,
если строку можно разделить по запятой
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/locale/ru.js"></script>
  <script>
moment.locale('ru');
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
str = str.split(',');
str = str.map((a,i) => i ? moment.utc(a, 'll').format('DD.MM.YYYY') : a.replace(/\D/g, ''));
document.write(JSON.stringify(str) )
  </script>

DDim1000 03.03.2021 19:43

Так не получается..., мне нужно отдельно получить номер...

рони 03.03.2021 19:46

DDim1000,
в чём проблема заменить document.write?


let number  = +str[0], data = str[1];

рони 03.03.2021 19:50

DDim1000,
или так ...
let str = 'Поезд №1375, прибывает 14 февраля 2021 в 08:20';
let number = +str.match(/(?<=№)\d+/);
alert(number);


Часовой пояс GMT +3, время: 08:59.