-
Notifications
You must be signed in to change notification settings - Fork 0
/
ValidatorDate.js
53 lines (46 loc) · 1.15 KB
/
ValidatorDate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import Validator from './Validator';
import moment from 'moment';
export default class ValidatorDate extends Validator {
constructor(format, message){
super(message);
if(typeof format === 'undefined' || format == '')
throw new Error('date format cannot be null');
this._dateFormat = format;
}
minAge(_minAge, message){
this.addStep(
'minAge',
function(v) {
if(!moment(v, this._dateFormat).isValid()){
return false;
}
return moment().diff(moment(v, this._dateFormat), 'years',false) >= _minAge;
},
message
);
return this;
}
maxAge(_maxAge, message){
this.addStep(
'maxAge',
function(v) {
if(!moment(v, this._dateFormat).isValid()){
return false;
}
return moment().diff(moment(v, this._dateFormat), 'years',false) <= _maxAge;
},
message
);
return this;
}
valid(message){
this.addStep(
'valid',
(v) => {
return moment(v, this._dateFormat, true).isValid();
},
message
);
return this;
}
}