我想验证一个人的出生日期,但我一直在尝试找出如何使用诸如yyyy-mm-dd这样的ISO日期格式来检查出生年份是否有效。我想检查年份是否有效,然后使用年份的最后两位数。因此,我希望在验证年份后,格式为yy-mm-dd。
我已经检查了月份和日期,但我正在努力弄清楚如何验证2000年之前和之后的年份。这是我用于检查月份和日期的代码
function checkDateOfBirth(dateString){
const year = dateString.substring(0, 2);
const month = dateString.substring(2, 4);
const day = dateString.substring(4, 6);
if (
day > 31 ||
month > 12 ||
(month == 2 && day > 29) ||
(month == (4 || 6 || 9 || 11) && day > 30)
) {
return false;
}
return true;
}
输入字符串将是“940912”,格式为yy-mm-dd。
1条答案
按热度按时间67up9zun1#
你为什么不直接使用内置的Date对象呢?它可以帮你处理大部分的边缘情况(包括二月,闰年等)。
但是,在传递给Date之前,我们需要修改输入,我将重用获取年、月和日的3行代码,只是我将首先使用
Number(...)
将它们转换为数字。我们现在需要的唯一特殊逻辑是,如果
2000 + year
在今年 * 大于 *,那么它可能意味着是20世纪的一年,将正确的年、月和日与"-"
连接起来,我们现在就有了一个yyyy-mm-dd
形式的字符串,我们可以将它传递给Date。最后,我们需要检查日期是否有意义,这可以通过检查
getTime
返回的数字是否为NaN
来实现,例如,000230
没有意义,因为二月不可能有第30天。