在Chrome中检查日期的更严格方法

时间:2019-02-28 20:41:52

标签: javascript google-chrome date parsing

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格式)。

1 个答案:

答案 0 :(得分:0)

如果不控制格式是什么,将很难解析它,并且可能会得到错误的数据。例如,在许多其他国家/地区,月份和日期被切换。因此,如果您的日期是11/11,则不知道是哪个月。

话虽这么说,我会使用一个库而不是尝试重新发明日期解析器。 Moment.js相当不错,它会告诉您是否认为日期字符串有效:https://momentjs.com/docs/#/parsing/string/