Foxtable(狐表)用户栏目专家坐堂 → 计算年龄


  共有2987人关注过本帖树形打印复制链接

主题:计算年龄

帅哥哟,离线,有人找我吗?
nxqtxwz
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
计算年龄  发帖心情 Post By:2020/4/10 11:01:00 [显示全部帖子]

请问老师:

DataColChanged中计算年龄:要求用2019-08-31减去[出生日期](列),然后除以10000,再取整,代码怎么写呢?

 

int[(“2019-08-31” - [出生日期])/10000]

 

把2019-08-31变成8位数,把[出生日期]变成8位数,不知怎么变。

[此贴子已经被作者于2020/4/10 11:07:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 11:53:00 [显示全部帖子]

Date.Today.Year 改成实际的日期怎么改呢?

比如:2019.08.31-[出生日期]


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 12:15:00 [显示全部帖子]

foxtable真是太博大精深、变化多端了。谢谢。


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 16:24:00 [显示全部帖子]

这么写为什么不行?

 

If e.DataCol.name = "出生日期" Then
    If e.newvalue <> Nothing Then
        Dim a As Date = #08/31/2019#
        Dim d As Date = New Date(e.newvalue.substring(0,4), e.newvalue.substring(5,2), 1)
        Dim y As Integer = d.year
        If format(d, "MMdd") <= Format(a, "MMdd") Then
            e.DataRow("年龄") = a.year - y
        Else
            e.DataRow("年龄") = a.year  - y -1
        End If
    Else
        e.DataRow("年龄") = Nothing
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 16:39:00 [显示全部帖子]

老师,不好意思,帮助的例子是四舍五入,我这个要求是只舍不入。所以想用这个。

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 17:02:00 [显示全部帖子]

明白了,本来就是整除。/

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 17:16:00 [显示全部帖子]

还是不行,算出来的年龄有的正确,有的不正确。原因就是取整而不是五入。

Math.Round(tp.TotalDays / 365.2422,2)


 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/10 17:45:00 [显示全部帖子]

以下是引用有点蓝在2020/4/10 17:22:00的发言:
请举例说明,给出几个日期,说明哪里不对

比如:2004-01-01  算出来是16岁,应该是15才对;

        2002-10-12  算出来是17岁,正确;

       2003-09-10   算出来是17岁

人家给的公式是:取整{(“2019-08-31”-[出生日期])/10000},要求把两个日期变为8位数相减除以10000后取整。

下面是算出来的年龄。

2004-01-01  16
2002-07-23  17
2002-10-20  17
2004-01-05  16
2002-10-10  17
2003-09-10  16
2002-02-08  18
2001-04-09  18
2001-10-02  18
2005-01-20  15
2003-10-10  16
2001-12-01  18
2002-04-05  17
2003-03-21  16
2001-03-08  18
2002-04-25  17
2004-05-10  15
2002-08-21  17
2005-03-25  14
2005-01-09  15
2005-11-20  14
2003-04-16  16
1998-09-06  16
2000-01-13  20
1998-05-07  21
2000-02-18  20
2001-07-24  18
1999-11-19  20
2001-03-10  18
2000-08-13  19
2001-07-08  18
1994-05-04  25
2000-06-11  19
2001-07-02  18
2002-09-10  17
2004-10-22  15
2004-10-09  15
2003-06-26  16
2005-04-12  14
2005-08-15  14
2004-02-18  16
2003-06-03  16
1998-07-02  21
2000-10-05  19
2005-03-21  14
2004-06-10  15


 回到顶部