用moment.js检查日期格式

时间:2015-02-18 15:17:10

标签: javascript date date-format momentjs

我正从我的屏幕中的日历中获取此类型的输入

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'。那么现在如何检查格式是否正是我想要的?请帮忙..

5 个答案:

答案 0 :(得分:19)

要查看日期格式,您可以使用:

{{1}}

答案 1 :(得分:14)

如果只是为了检查以下是一个更好的选择

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

答案 2 :(得分:2)

如果您没有特定的日期格式,那么您也可以使用格式数组

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

答案 3 :(得分:0)

在打字稿中:

当前使用的import语句(import *作为“ moment”起的时刻)是模块的导入,并且不允许调用模块(即,禁止moment())。可以通过importet对象访问所有已命名的矩出口。可以通过moment.default()调用默认导出。 我认为正确的解决方案是更改。

  

import * as moment from "moment" import moment from "moment"

因此,我们只导入默认导出并命名为“时刻”。

答案 4 :(得分:0)

这好得多:

如果(!moment(checked_date,DATE_FORMAT).isValid())抛出错误(Argument passed is invalid: checked_date. Date format must be ${DATE_FORMAT});