我想知道是否有一个javascript函数可以确定输入字符串是数字还是日期或两者都不是。
这是我的功能和codepen:
function isNumeric(n) {
// http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers
return !isNaN(parseFloat(n)) && isFinite(n);
}
function number_or_string(i) {
// http://stackoverflow.com/questions/7657824/count-the-number-of-integers-in-a-string
if (i.length == 10 && i.replace(/[^0-9]/g, "").length) {
result = 'date'
} else if (isNumeric(i)) {
result = 'number'
} else {
result = 'string'
}
return result
}
是否有预先构建的功能可以执行此操作(或者可能是更好的功能,因为上述功能显然有局限性)?
答案 0 :(得分:1)
简短回答:不,不是真的。
这是因为日期可以以多种格式显示。您可以拥有字符串日期,日期日期或数字日期。 Unix时间戳基本上只是1到10位整数。您需要上下文来确定整数代表什么。
但是,在代码中需要这样的函数这一事实表明存在更大的问题。理想情况下,您应该知道函数输出的数据类型和格式。如果您正在使用API,它应该有一个记录良好的界面,从而帮助您避免这个问题。
但如果你只需要90%的时间都可以使用的东西,你可以尝试一下。
function isDate (x) {
if (x instanceof Date) { return true; }
if (typeof x === String && !isNaN(Date.parse(x))) { return true; }
return false;
}