Datetime VBScript根据出生日期计算出一个人是否超过18岁

Datetime VBScript根据出生日期计算出一个人是否超过18岁,datetime,vbscript,Datetime,Vbscript,我把我的用户DOB作为一个字符串(不要问),我如何才能可靠地检查他们是否超过18岁?我会使用DateDiff吗?如何首先将字符串转换为日期?日期为dd/mm/yyyy格式 非常感谢 Jonathan是的,您需要CDate来转换字符串,然后是DateDiff(“yyy”,date1,date2),因为您只需要年份。类似于: stringDate = "02/12/1990" if IsDate(stringDate) then document.write(DateDiff(yyyy, C

我把我的用户DOB作为一个字符串(不要问),我如何才能可靠地检查他们是否超过18岁?我会使用DateDiff吗?如何首先将字符串转换为日期?日期为dd/mm/yyyy格式

非常感谢
Jonathan

是的,您需要CDate来转换字符串,然后是DateDiff(“yyy”,date1,date2),因为您只需要年份。

类似于:

stringDate = "02/12/1990"
if IsDate(stringDate) then
    document.write(DateDiff(yyyy, CDate(stringDate), Date()))
end if

VBScript的CDate函数使用当前区域设置转换日期。你可能会遇到问题

另一种方法是长期执行并解析日期:

d = "02/05/1984"

sYear = cint(right(d,4))
sMonth = cint(mid(4,2))
sDay = cint(left(d,2))

ds = DateSerial(sYear, sMonth, sDay)
现在,您可以执行DateDiff:

if ( DateDiff( "yyyy", d, ds ) > 18 ) ...

如果
d=02/09/1994
ds=26/07/2012
,又会怎样呢
datediff(“yyyy”,d,ds)
给你们18个,但那个人还并没有18岁,他必须等几个月。
也许你需要按月比较?

拿他们的出生日期,加上18年,看看当前的日期是否相同或更大。

我需要准确的出生日期,因为我不能允许18岁以下的人访问,我们的用户都是17岁或18岁,所以我需要确保他们都超过18岁。ThanksI刚刚注意到这里的另一个问题,即CDate()可能需要一些特定于区域设置的DD/MM/YYYY的帮助。为此,您可以解析出组成部分并将它们反馈给CDate(mm.dd.yyyy),这正是我首先想到的。事实上我在“yyyy”部分错了。我认为这比过去几年。。。但是,它指定了返回的内容。。。为了清楚起见,我已删除了注释。您是否尝试过DonTaskDontDell函数?DOB是一个字符串。这个答案如何解决最初的问题?