This answer提供了一种检查JavaScript中日期的好方法:
function isValidDate(d) {
return d instanceof Date && !isNaN(d);
}
但是,这不适用于我在Chrome浏览器中,因为它会将包含数字的字符串标识为日期:
function getDate(str) {
console.log(new Date(str).toLocaleString());
}
getDate("a string that contains the number 1");
getDate("a string that contains the number 12");
getDate("a string that contains the number 123");
getDate("a string that contains the number 1234");
getDate("a string that contains the number 12345");
getDate("a string that contains the number 123456");
getDate("a string that contains the number 1234567"); // in Chrome, only this one returns "Invalid Date"
实施更严格的日期检查器(与Chrome的灵活日期解析一起使用)的最佳方法是什么?我无法使用任何要求以特定方式格式化日期的内容(例如,仅接受ISO 8601格式)。
答案 0 :(得分:0)
如果不控制格式是什么,将很难解析它,并且可能会得到错误的数据。例如,在许多其他国家/地区,月份和日期被切换。因此,如果您的日期是11/11,则不知道是哪个月。
话虽这么说,我会使用一个库而不是尝试重新发明日期解析器。 Moment.js相当不错,它会告诉您是否认为日期字符串有效:https://momentjs.com/docs/#/parsing/string/