2012-07-10 73 views
2

我很好奇,如果有一个“最佳实践”的做法进行年龄验证。我想我会从现在开始毫秒和从他们的出生日期毫秒,然后看看他们的出生日期+ ageReq *(365 * millPerYear)> currentMillisecond。年龄验证的最佳方式是什么?

我相信这会起作用,但是我想知道这种方法是否有任何问题和/或是否有一个库可以解决我在这里可能没有预料到的任何缺陷(例如,是否存在闰年问题?)

这个问题是语言不可知的,我目前在Java中,但很好奇什么正确的方法来做到这一点将是语言无关。

TIA

+2

您是否假设用户无法更改其时钟或实现代理来编辑Web服务调用返回的日期? – 2012-07-10 01:28:17

+0

你的想法很好,唯一的缺点是“当前时间”部分。使用时钟系统是一个非常糟糕的主意,因为用户可以改变它的值。最好在服务器或其他计算机上检查它是否有配置的时钟值 – 2012-07-10 01:33:54

+0

听起来像是一个好主意,直​​到你意识到没有像millPerYear这样的常量 - 闰秒,闰日使得它更多一点有趣。真的,为它使用一个库,不要重新发明轮子。 – Voo 2012-07-10 01:38:31

回答

7

您可以尝试joda-time。是的,你的支票存在一些小缺陷。这不是很准确。取决于你要遵守多少遵纪守法,你可以或不遵守。乔达时间是一个很好的图书馆,因为它确实照顾所有基本检查。

如果您正在寻找不可知的语言。然后你可以看看乔达时代的代码。因为它精确计算日期。

+0

这看起来就像我需要的一样。非常感谢。 – 2012-07-10 01:46:08

2

如果您使用的是现有的出生日期,然后使用日期和Calendar类以获得准确的差异。如果你使用你的方法,那么它不是确切的,因为闰年​​/秒等...日期是一个混乱的手工制定。

如果你目前没有生日,但你不需要记录它,我会建议你的应用程序实际上要求一个,因为它很烦人,而且当我必须这样做时,我只需向下滚动并选择随机的一个大于20左右。只要询问是或否,如果您在X/X以下。

+0

正是这样。大多数网站没有合法的需要知道我的生日,所以他们得到“1900年1月1日”。 – 2012-07-10 01:36:29

+0

不幸的是,这是客户的要求。不过,我完全同意你的看法。 – 2012-07-10 01:44:07

+0

放心,如果我与他们打交道,你的客户将从我那里得到假信息。 :P – 2012-07-10 09:03:55