web-dev-qa-db-ja.com

moment.jsで日付の形式を確認する

このタイプの画面でカレンダーから入力を取得しています

DD-MMM-YYYY HH:mm a

ユーザーはキーボードから日付を入力できます。次に、ユーザーが日付を正しい形式で指定したかどうかを確認する必要があります。私のアプリケーションでmoment.jsを頻繁に使用しており、このように検証しています

 if(angular.equals(moment(scope.modelValue).format('DD-MMM-YYYY HH:mm a'), 'Invalid date'))
{
       alert('date is not correct');

}
else
{
alert('date is correct');
}

正常に機能していますが、問題は「18-Feb-2015 2」のような入力を提供すると、「18-Feb-2015 00:00 am」に変換されます。それで、そのフォーマットをチェックする方法は、まさに私が欲しいものですか?助けてください ..

11
rishi

日付の形式をチェックするために使用できます:

moment(checked_date, DATE_FORMAT).format(DATE_FORMAT) === checked_date
23
EAndreyF

以下を確認するだけの場合は、より良い代替手段です

moment(scope.modelValue, 'DD-MMM-YYYY HH:mm a', true).isValid()
24
wallop

特定の日付フォーマットがない場合は、フォーマットの配列を使用することもできます。

moment(checked_date, [DATE_FORMAT1, DATE_FORMAT2]).format(DATE_FORMAT)
 === checked_date
2

これははるかに優れています:

if(!moment(checked_date、DATE_FORMAT).isValid())throw Error(Argument passed is invalid: checked_date. Date format must be ${DATE_FORMAT});

0
Lucas