我一直在检查字符串是否代表"Tue May 16 2017 00:00:00 GMT+0400 (Georgian Standard Time)"
。目前,我需要检查此字符串Date
是否代表var tryConvert = new Date(input);
var tryMonth = tryConvert.getMonth();
if (!(tryMonth !== tryMonth)) {//checking for NaN
return true;
}
。我写了以下代码:
96
问题是输入可以是整数Date
并且它成功返回true。理想的行为是,它应仅适用于ISO
个实例,/\d\d\d\d\-\d\d\-\d\dT\d\d\:\d\d\:\d\d/g
字符串Date.toString()
和"Tue May 16 2017 00:00:00 GMT+0400 (Georgian Standard Time)"
字符串,如function isDate(input) {
if (!input) {
return false;
}
if (input instanceof Date) {
return true;
}
var rx = /\d\d\d\d\-\d\d\-\d\dT\d\d\:\d\d\:\d\d/g;
var time = rx.exec(input);
if (time) {
return true;
}
if (typeof input === 'string' || input instanceof String) {
var tryConvert = new Date(input);
var tryMonth = tryConvert.getMonth();
if (!(tryMonth !== tryMonth)) {
return true;
}
}
return false;
};
。我怎样才能做到这一点?
为了更清楚,这里是完整的代码:
SELECT anagrafe.MARCHIO, anagrafe.BOLO, anagrafe.NUMERO_AZIENDALE, visite.COLLOCAZIONE, visite.DATA_PREVISTA_PARTO, visite.DATA_VISITA
FROM anagrafe LEFT JOIN visite USING(NUMERO_AZIENDALE)
WHERE
visite.STATO_VISITA ='Gravida'
AND visite.DATA_PREVISTA_PARTO > '2017-04-01'
AND visite.DATA_VISITA =
(SELECT MAX(visite_2.DATA_VISITA)
FROM anagrafe_2
LEFT JOIN visite_2 USING(NUMERO_AZIENDALE)
WHERE anagrafe_2.NUMERO_AZIENDALE = anagrafe.NUMERO_AZIENDALE)
答案 0 :(得分:1)
对于您的用例,如果input
是一个字符串,并检查它是否是一个可解析的数字,那么结合您的检查就可以了。
在这里,我添加了此检查,您可以在其中检查input
是否为字符串:
if ((typeof input === 'string' || input instanceof String) && isNaN(input)) {
var tryConvert = new Date(input);
var tryMonth = tryConvert.getMonth();
if (!(tryMonth !== tryMonth)) {
return true;
}
}
return false;
基本上,如果false
是包含input
,96
或任何其他可解析数字但实际日期字符串(例如5555
)的字符串,则返回Tue May 16 2017 00:00:00 GMT+0400 (Georgian Standard Time)
不是可解析的数字,因此他们将通过isNaN()
检查并继续进行转换测试。
您也可以删除RegExp测试,因为它只测试一种特定的日期格式。