Moment.js - Создание только переменной времени из формы ввода - PullRequest
0 голосов
/ 24 сентября 2018

вы могли бы подумать, что это будет просто, но у меня есть <input type="time">, где пользователь вводит время. Это поле дает мне следующий вывод: 16:30.Таким образом, в основном это меняет способ отображения на входе, который равен --:-- -- для 04:30 PM.

(кстати, это угловая реактивная форма с использованием материала)

Итак, из формы, строка, с которой мне нужно работать, это: 16:30

Я могусвоего рода превратить его в мгновенный объект, подобный этому:

let timeTwelve = moment(this.webcastForms.value[0].time, 'HH:MM');

То есть, я console.log дает мне какой-то большой объект.Я надеялся, что тогда наступит момент, чтобы я мог отформатировать его так, как мне нужно.Итак, я попытался с:

let timeTwelve = moment(this.webcastForms.value[0].time, 'HH:MM').format('hh:mm A');

, который выводит: invalid date.

Понятия не имею, зачем он это делает.Есть идеи?

(Бонус, у меня тоже есть дата, и я хотел бы создать третью переменную, которая объединена в формате MM/DD/YYYY hh:mm a (08/26/2016 09:00 AM). Как мне добавить свое время к дате или, возможно, сделатьновый момент объекта, и передать дату, а также время?)

Спасибо за любую помощь!

(для справки, моя дата уже момент)

Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…}, _locale: 
    Locale, …}
    _d: Mon Sep 24 2018 00:00:00 GMT-0400 (Eastern Daylight Time) {}
    _i: {year: 2018, month: 8, date: 24}
    _isAMomentObject: true
    _isUTC: false
    _isValid: true
    _locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: 
    "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, …}
    _pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -1, charsLeftOver: 0, …}
    __proto__: Object

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я полагаю, что проблема в том формате, который вы используете.moment(this.webcastForms.value[0].time, 'HH:MM');

формат для минут mm, но вы использовали MM для номера месяца. Попробуйте изменить его на

moment(this.webcastForms.value[0].time, 'HH:mm').format('hh:mm A');

0 голосов
/ 24 сентября 2018

Момент дает недопустимую дату, так как ожидает, что время будет связано с какой-либо датой.

Если ваша дата и время оба являются строковыми, почему бы вам не попробовать что-то вроде

moment(`${dateStr}T${timeStr}`).format("MM/DD/YYYY hh:mm a")

console.log(moment(`${'2018-04-02'}T${'16:30'}`).format("MM/DD/YYYY hh:mm a"))

/* if date is already moment object */
const time = "16:30".split(':');
const momentObj = moment("2018-04-02"); //creating a moment obj for demo
momentObj.set({hours: time[0], minutes: time[1]});
console.log(momentObj.format("MM/DD/YYYY hh:mm a"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...