2012-07-10 83 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

相關問題