2016-10-11 2 views
-1

У меня есть дата в британском формате «DD/MM/YYYY HH: mm», и я хочу создать новую дату с javascript. Я пытаюсь использовать time.js, но он не распознает время и просто добавляет текущее время.Javascript - Создать новую дату в формате UK и moment.js

var myDate = "11/10/2016 09:00" 

// The toDate() is equivalent to the javascript new Date() function 
var newDate = moment(myDate, "YYYY-MM-DD HH:mm").val()).toDate(); 

// output: 
// 20161011T091406Z 
// Tue Oct 11 2016 09:14:06 GMT+0100 

Как вы можете видеть, его изменили временную часть на время запуска сценария.

+2

Ваш формат даты не соответствует указанному вход на всех - это то, что намеренно? – jonrsharpe

+0

Как и было предложено, вы должны исправить свой формат до того, который соответствует вашей входной строке. У вас будет: «var newDate = moment (myDate,« DD/MM/YYYY HH: mm »). ToDate();' – VincenzoC

+0

@jonrsharpe и VincenzoC вы ошиблись. Я использую moment.js для анализа существующего формата в формате javascript iso. Читает момент docs: http://momentjs.com/docs/#/parsing/string-format/ – adam78

ответ

1

Фигурные это сам, выполнив следующие действия:

var myDate = "11/10/2016 09:00" 

myDate = moment(myDate, "DD/MM/YYYY HH:mm").toISOString(); 

var newDate = moment(myDate).toDate(); 
+2

Вы разбираете строку в момент объекта, который затем выводится как строка, которая затем снова анализируется на мгновенный объект и вызывает * toDate *, что является неэффективным. Попробуйте 'moment (myDate," DD/MM/YYYY HH: mm "). ToDate()', как предложил VincenzoC. Или напишите 2-строчную функцию, чтобы сделать то же самое. – RobG

Смежные вопросы