I am taking input from calendar in my screen which is of this type
DD-MMM-YYYY HH:mm a
but user can provide date from keyboard. Now I have to check whether user has provided the date in correct format or not. I am heavily using moment.js in my application and validating it like this
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');
}
It is working fine but the problem is if I provide input like '18-Feb-2015 2' then it is converted to '18-Feb-2015 00:00 am'. so now how to check that format is exactly what I want ? please help ..
For checking date format you could use:
moment(checked_date, DATE_FORMAT).format(DATE_FORMAT) === checked_date
if it's just for checking the below is a better alternative
moment(scope.modelValue, 'DD-MMM-YYYY HH:mm a', true).isValid()
If you don't have a particular date format then you can also use Array of formats,
moment(checked_date, [DATE_FORMAT1, DATE_FORMAT2]).format(DATE_FORMAT)
=== checked_date
In Typescript:
The import statement currently used (import * as moment from "moment") is a module import, and modules are not allowed to be called (i.e. moment() is forbidden). All named exports of moment can be accesed through the importet object. The default export can be called via moment.default() In my opinion the correct solution is to change.
import * as moment from "moment"
toimport moment from "moment"
So we just import the default export and name it moment.
来源:https://stackoverflow.com/questions/28587018/check-format-of-date-with-moment-js