以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]身份证提取年龄  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98502)

--  作者:jick0526
--  发布时间:2017/3/30 20:16:00
--  [求助]身份证提取年龄
If e.DataRow.isnull("身份证号") = Nothing Then
    Dim d As Date = ReadBirthDay(e.DataRow("身份证号"))
    e.DataRow("年龄") = Date.Today.year - d.year
Else
    e.DataRow("年龄") = Nothing
End If

老师,请问下,如果身份证假如是5610276732这组号码,前六个数字代表年月日,就是1956年,10月27日,19没写出来,这种情况下该
怎么提取年龄。上面的代码只能正规的身份证号才能正确提取年龄。

--  作者:有点色
--  发布时间:2017/3/30 20:35:00
--  
Dim str As String = "5610276732"
If str.length >= 6 Then
    Dim d As Date = new Date(1900+str.SubString(0,2), str.SubString(2,2), str.SubString(4,2))
    msgbox(d)
End If

--  作者:jick0526
--  发布时间:2017/3/30 21:16:00
--  
老师,上面的代码该怎么用,我是想A列输入类似5610276732的10位数,B列会自动输入年龄
--  作者:有点色
--  发布时间:2017/3/30 22:10:00
--  
Dim str As String = e.DataRow("身份证号")
If str.length >= 6 Then
    Dim d As Date = new Date(1900+str.SubString(0,2), str.SubString(2,2), str.SubString(4,2))
    e.DataRow("年龄") = Date.Today.year - d.year
Else
    e.DataRow("年龄") = Nothing
End If