Как получить am pm из строки времени даты, используя момент js

У меня есть строка как Mon 03-Jul-2017, 11:00 AM/PM, и мне нужно преобразовать ее в строку типа 11:00 AM/PM с помощью момента js.

Проблема в том, что я не могу получить AM или PM из строки времени даты.

Я делаю это:

moment(Mon 03-Jul-2017, 11:00 AM, 'dd-mm-yyyy hh:mm').format('hh:mm A')

и он работает нормально, поскольку я получаю 11:00 AM, но если строка имеет PM в нем, он все равно дает AM в выводе.

как это, moment(Mon 03-Jul-2017, 11:00 PM, 'dd-mm-yyyy hh:mm').format('hh:mm A') также дает 11:00 AM в выводе вместо 11:00 PM

Ответ 1

При синтаксическом анализе вашего ввода вы используете токены неправильного формата. Вы должны использовать ddd для сокращения названия дня недели, DD для дня месяца, MMM для сокращения названия месяца, YYYY для года, hh для 1-12 час, mm для минут и A для AM/PM. Смотрите moment(String, String) документы.

Вот рабочий живой пример:

console.log( moment('Mon 03-Jul-2017, 11:00 AM', 'ddd DD-MMM-YYYY, hh:mm A').format('hh:mm A') );
console.log( moment('Mon 03-Jul-2017, 11:00 PM', 'ddd DD-MMM-YYYY, hh:mm A').format('hh:mm A') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Ответ 2

Вы получите время без указания формата даты. преобразовать строку в дату, используя объект Date

var myDate = new Date('Mon 03-Jul-2017, 06:00 PM');

рабочий раствор:

var myDate= new Date('Mon 03-Jul-2017, 06:00 PM');
console.log(moment(myDate).format('HH:mm')); // 24 hour format 
console.log(moment(myDate).format('hh:mm'));
console.log(moment(myDate).format('hh:mm A'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>