У меня есть строка datetime, которая извлекается из контроллера в следующем формате:
dd-MM-yyyy hh:mm:ss a
3/1/2018 4:02:00 PM
Я хочу показать его в виде ввода datetime-local
. Поэтому мне нужно преобразовать дату и время в этот формат:
yyyy-MM-DDTHH:mm
2018-01-03T16:02
Сначала я пытаюсь использовать этот код, который даст результат как формат js, а затем использует функцию для ее форматирования. Но он ошибочно читает месяц как день и день как месяц. Это означает, что вывод будет отображаться следующим 2018-03-01T16:02
.
var date_test = new Date("3/1/2018 4:02:00 PM".replace(/-/g,"/"));
Есть ли другой способ сделать это правильно?
Поскольку вы уже знаете формат
dd-MM-yyyy hh:mm:ss a
3/1/2018 4:02:00 PM
почему бы просто не разделить строку правильно (часть даты, а затем часть времени) и, наконец, просто создать новый объект даты с помощью yyyy, MM, dd и т.д.?
Использование moment.js. Большая библиотека:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.7.0/moment.min.js"></script>
<script type="text/javascript">
var dateString = "3/1/2018 4:02:00 PM";
var currentDate = moment(dateString, "M/D/YYYY h:mm:ss a");
document.write(currentDate.format("YYYY-MM-DDTHH:mm"))
</script>