如果月份无效,如何从DOB计算年龄?

时间:2018-09-08 11:39:33

标签: javascript c# regex typescript datetime

我有一个日期字段,可以接受 month 是否为未知。然后根据输入的日期和当前日期和时间计算age

var birthDate = new Date("12 UNK 1995");
var now = new Date();
var age = now.getFullYear() - birthDate.getFullYear();

document.write("Your Age is: " + age);

如果运行,这将引发我 NaN 错误。我认为是因为该无效的日期格式。

即使仅基于 year month 未知,我有什么方法可以计算age?有什么样的约会对象吗?

2 个答案:

答案 0 :(得分:3)

如果不知道该月,则通常以编程方式将其设置为年中-七月。我在印度知道这个问题-有些人有时不知道他们的生日。

例如如下所示:

var month = "UNK"; // TODO: here is your code to get the month name from field

month = month == "UNK" ? "JUL" : month;

var birthDate = new Date("12 " + month + " 1995");
var now = new Date();
var age = now.getFullYear() - birthDate.getFullYear();

document.write("Your Age is: " + age);

但是请注意,您的计算并不是真正正确的,因为您没有使用完整的日期(天,月,年,小时,分钟)进行计算。

我的建议

但是我建议使用新的HTML5输入字段类型 date (请参阅此链接),如下所示(将鼠标指针移到该字段上):

<input name="birthdate" type="date" required>

所有用户都必须按照自己的职责填写此日期。在这种情况下,他们必须选择一个日期,您将对此没有责任。

答案 1 :(得分:1)

您已经在字符串中包含了年份,因此请从字符串中提取年份,然后从年份中减去。