2017-01-31 7 views
0
moment("17-Jan-2017 12:00 pm", "DD-MMM-YYYY hh:mm a") 

Использование moment.js, я не могу решить, как создать текущую дату с заранее заданным временем. Я думал, это может сработать:Moment.js - получить текущую дату с заданным временем

moment(moment(new Date()).format("DD/MM/YYYY") + " 12:00 pm", "DD-MMM-YYYY hh:mm a"); 

Но это не так - как я могу построить это datetime?

ответ

1

Вы можете установить его с помощью set function так:

moment().set({ hour: 12, minute: 0, second: 0, millisecond: 0 }); 

А затем форматировать, что с помощью format function:

moment().set({ hour: 12, minute: 0, second: 0, millisecond: 0 }) 
     .format("DD/MM/YYYY hh:mm:ss"); 

Обновлено - теперь также включает в себя установку second и millisecond, чтобы предотвратить их удаление с текущей даты/времени. Гораздо лучший подход - ответ @MattJohnsons, который использует parsing.

+1

Эта сортировка работает, но имеет побочный эффект секунд и ниже, устанавливаемый на основе текущего времени, а не нуля. Лучше начинать с хороших данных, а не начинать где-то еще и настраивать. Но спасибо. –

+0

@MattJohnson да, хороший крик. Я думал, что во время публикации, но думал в контексте оригинального вопроса, это было несколько неуместно, поэтому он старался держать его коротким и сладким. Вы правы, но лучше всего сбросить все до нуля. Обновил ответ соответственно. –

2

Предпочтительным способом было бы установить время во время первоначальной конструкции. Вы можете использовать:

moment("12:00", "HH:mm") 

или

moment({ hour: 12, minute: 0}) 

дата часть будет решена до текущей даты, и ничего секунд или меньше будет установлено равным нулю.

+0

Я видел это в фиде активности ... Я был как, я не ответил на это! –

+0

@MatthewJohnson - Это хорошее имя. Рад познакомиться! –

+0

Это, безусловно, лучший подход и должен быть ответом. Я узнал что-то новое. Спасибо за ответ. –