Skip to content

Commit bc40856

Browse files
committed
Some JSLint fixes to strtotime
1 parent 4324f6e commit bc40856

File tree

1 file changed

+40
-30
lines changed

1 file changed

+40
-30
lines changed

functions/datetime/strtotime.js

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function strtotime (text, now) {
2222
// * returns 3: 1127041200
2323
// * example 4: strtotime('2009-05-04 08:30:00 GMT');
2424
// * returns 4: 1241425800
25-
var parsed, match, year, date, days, ranges, len, times, regex, i;
25+
var parsed, match, today, year, date, days, ranges, len, times, regex, i;
2626

2727
if (!text) {
2828
return null;
@@ -40,87 +40,97 @@ function strtotime (text, now) {
4040
// dates with two-digit years differently
4141
// etc...etc...
4242
// ...therefore we manually parse lots of common date formats
43-
var match = text.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/);
44-
if (match && match[2]==match[4]) {
45-
if (match[1]>1901) {
43+
match = text.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/);
44+
if (match && match[2] === match[4]) {
45+
if (match[1] > 1901) {
4646
switch (match[2]) {
4747
case '-': { // YYYY-M-D
48-
if (match[3]>12 | match[5]>31) return(0);
48+
if (match[3]>12 | match[5]>31) {
49+
return(0);
50+
}
4951
return new Date(match[1], parseInt(match[3], 10) - 1, match[5],
5052
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
51-
break;
5253
}
5354
case '.': { // YYYY.M.D is not parsed by strtotime()
5455
return(0);
55-
break;
5656
}
5757
case '/': { // YYYY/M/D
58-
if (match[3]>12 | match[5]>31) return(0);
58+
if (match[3]>12 | match[5]>31) {
59+
return(0);
60+
}
5961
return new Date(match[1], parseInt(match[3], 10) - 1, match[5],
6062
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
61-
break;
6263
}
6364
}
6465
}
6566
else if (match[5]>1901) {
6667
switch (match[2]) {
6768
case '-': { // D-M-YYYY
68-
if (match[3]>12 | match[1]>31) return(0);
69+
if (match[3]>12 | match[1]>31) {
70+
return(0);
71+
}
6972
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
7073
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
71-
break;
7274
}
7375
case '.': { // D.M.YYYY
74-
if (match[3]>12 | match[1]>31) return(0);
76+
if (match[3]>12 | match[1]>31) {
77+
return(0);
78+
}
7579
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
7680
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
77-
break;
7881
}
7982
case '/': { // M/D/YYYY
80-
if (match[1]>12 | match[3]>31) return(0);
83+
if (match[1]>12 | match[3]>31) {
84+
return(0);
85+
}
8186
return new Date(match[5], parseInt(match[1], 10) - 1, match[3],
8287
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
83-
break;
8488
}
8589
}
8690
}
8791
else {
8892
switch (match[2]) {
8993
case '-': { // YY-M-D
90-
if (match[3]>12 | match[5]>31 | (match[1] < 70 & match[1]>38)) return(0);
91-
var year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1];
94+
if (match[3]>12 | match[5]>31 | (match[1] < 70 & match[1]>38)) {
95+
return(0);
96+
}
97+
year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1];
9298
return new Date(year, parseInt(match[3], 10) - 1, match[5],
9399
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
94-
break;
95100
}
96101
case '.': { // D.M.YY or H.MM.SS
97102
if (match[5]>=70) { // D.M.YY
98-
if (match[3]>12 | match[1]>31) return(0);
103+
if (match[3]>12 | match[1]>31) {
104+
return(0);
105+
}
99106
return new Date(match[5], parseInt(match[3], 10) - 1, match[1],
100107
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
101108
}
102-
else if (match[5]<60 & !(match[6])) { // H.MM.SS
103-
if (match[1]>23 | match[3]>59) return(0);
104-
var today = new Date();
109+
if (match[5]<60 & !(match[6])) { // H.MM.SS
110+
if (match[1]>23 | match[3]>59) {
111+
return(0);
112+
}
113+
today = new Date();
105114
return new Date(today.getFullYear(), today.getMonth(), today.getDate(),
106115
match[1] || 0, match[3] || 0, match[5] || 0, match[9] || 0) / 1000;
107116
}
108-
else return(0); // invalid format, cannot be parsed
109-
break;
117+
return(0); // invalid format, cannot be parsed
110118
}
111119
case '/': { // M/D/YY
112-
if (match[1]>12 | match[3]>31 | (match[5] < 70 & match[5]>38)) return(0);
113-
var year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5];
120+
if (match[1]>12 | match[3]>31 | (match[5] < 70 & match[5]>38)) {
121+
return(0);
122+
}
123+
year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5];
114124
return new Date(year, parseInt(match[1], 10) - 1, match[3],
115125
match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000;
116-
break;
117126
}
118127
case ':': { // HH:MM:SS
119-
if (match[1]>23 | match[3]>59 | match[5]>59) return(0);
120-
var today = new Date();
128+
if (match[1]>23 | match[3]>59 | match[5]>59) {
129+
return(0);
130+
}
131+
today = new Date();
121132
return new Date(today.getFullYear(), today.getMonth(), today.getDate(),
122133
match[1] || 0, match[3] || 0, match[5] || 0) / 1000;
123-
break;
124134
}
125135
}
126136
}

0 commit comments

Comments
 (0)