|
88 | 88 | } |
89 | 89 |
|
90 | 90 | function isValidDate(value) { |
91 | | - // Check if the value is a string and can be converted to a Date object |
92 | | - if (typeof value === 'string' |
93 | | - && !isNaN(value) |
94 | | - && !(/^[0-9a-fA-F]{24}$/.test(value)) |
95 | | - && !(/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?Z|Mon|Tue|Wed|Thu|Fri|Sat|Sun [A-Za-z]{3} \d{2} \d{4} \d{2}:\d{2}:\d{2} [A-Za-z]{3} \+\d{4}|\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,3})?|\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,3})?|\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}(\.\d{1,3})?|Sun|Mon|Tue|Wed|Thu|Fri|Sat),? .+$/.test(value)) |
96 | | - ) { |
97 | | - const dateObject = new Date(value); |
98 | | - |
99 | | - // Check if the result of the Date constructor is a valid Date object |
100 | | - if (!isNaN(dateObject) && dateObject.toString() !== 'Invalid Date') { |
101 | | - return dateObject; // It's a valid Date object |
| 91 | + if (typeof value === 'string' && value.length >= 20 && value.length <= 24) { |
| 92 | + const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?Z$/i; |
| 93 | + if (iso8601Regex.test(value)) { |
| 94 | + const dateObject = new Date(value); |
| 95 | + dateObject.setUTCHours(dateObject.getUTCHours(), 0, 0, 0); |
| 96 | + if (!isNaN(dateObject)) { |
| 97 | + return dateObject; // Is a valid date object and now utc |
| 98 | + } |
102 | 99 | } |
103 | 100 | } |
104 | 101 |
|
105 | | - return value; // It's not a valid Date object |
| 102 | + return value; // Is a valid date object adjusted to UTC time |
| 103 | + |
106 | 104 | } |
107 | 105 |
|
108 | 106 | function dotNotationToObject(data, obj = {}) { |
|
424 | 422 | queryValue = queryValue.toLowerCase() |
425 | 423 | } |
426 | 424 |
|
| 425 | + dataValue = isValidDate(dataValue) |
| 426 | + queryValue = isValidDate(queryValue) |
| 427 | + |
427 | 428 | switch (query[i].operator) { |
428 | 429 | case '$includes': |
429 | 430 | case 'includes': |
|
443 | 444 | queryStatus = true |
444 | 445 | break; |
445 | 446 | case '$lt': |
446 | | - if (dataValue > queryValue) |
| 447 | + if (dataValue < queryValue) |
447 | 448 | queryStatus = true |
448 | 449 | break; |
449 | 450 | case '$lte': |
450 | | - if (dataValue >= queryValue) |
| 451 | + if (dataValue <= queryValue) |
451 | 452 | queryStatus = true |
452 | 453 | break; |
453 | 454 | case '$gt': |
454 | | - if (dataValue < queryValue) |
| 455 | + if (dataValue > queryValue) |
455 | 456 | queryStatus = true |
456 | 457 | break; |
457 | 458 | case '$gte': |
458 | | - if (dataValue <= queryValue) |
| 459 | + if (dataValue >= queryValue) |
459 | 460 | queryStatus = true |
460 | 461 | break; |
461 | 462 | case '$in': |
|
0 commit comments