2 回答

TA貢獻1797條經驗 獲得超4個贊
使用+operator、Number函數或 lodash_.toNumber()將返回NaN帶有混合數字的字符串:
console.log(+'2019-06-12T06:20:39.465Z')
console.log(+'20000')
所以邏輯是:
const parseParam = value => {
let v = +value
if (!isNaN(v)) return v
v = Date.parse(value)
if (!isNaN(v)) return v
if (value === 'true' || value === 'false') return value === 'true'
return value
}
console.log(parseParam('2019-06-12T06:20:39.465Z'))
console.log(parseParam('20000'))
console.log(parseParam('false'))
console.log(parseParam('cats'))

TA貢獻1853條經驗 獲得超18個贊
ISO 可能會省略秒或時區或毫秒,但如果您忽略這些并檢查其他所有內容,您可以可靠地檢查不同的 ISO 格式。
console.log(isISO('2019-06-12T06:20:39.234Z'))
console.log(isISO('2019-06-12T06:20:39'))
console.log(isISO('2019-06-12T06:20'))
console.log(isISO("2019-1-1"))
console.log(isISO('2019-06-12T06:20:39+05'))
console.log(isISO('ketchup'))
function isISO(str) {
try {
str = str.split('+')[0];
var iso = new Date(str).toISOString();
var [date, time] = iso.split('T');
var [y, m, d] = date.split('-');
return iso.indexOf(`${y}-${m}-$99i0e0t`) === 0;
} catch (e) {
return false;
}
}
添加回答
舉報