首页 > 解决方案 > Moment.js - 从输入表单创建“时间”唯一变量

问题描述

你会认为这很简单,但我有一个<input type="time">用户输入时间的地方。该字段为我提供以下输出:16:30. 所以,基本上它改变了它在输入中出现的方式,即--:-- --for 04:30 PM

(顺便说一句,这是使用 Material 的 Angular 反应形式)

因此,从表单中,我必须使用的字符串是: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

标签: javascriptangularmomentjsangular-reactive-forms

解决方案


我相信您使用的格式一定有问题。moment(this.webcastForms.value[0].time, 'HH:MM');

分钟格式是,mm但您使用MM的是月份数。尝试将其更改为

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


推荐阅读