Существует замечательная библиотека дат для JavaScript, которая называется DateJS . Это делает операции с датами чрезвычайно простыми.
Ваш первый шаг, конечно, состоит в том, чтобы проанализировать предоставленную дату. DateJS предоставляет множество функций синтаксического анализа, таких как:
Date.parse("Mar 3 2010");
Date.parse('March 20th 1973');
Date.parse("03 12 2010");
После того, как вы проанализировали дату, вы можете сравнить ее с датой 18 лет назад. Это также легко с DateJS
var userBDay = Date.parse("Mar 3 1970");
var eighteenYearsAgo = (18).years().ago();
var is18 = (userBDay >= eighteenYearsAgo);
Вы, конечно, предполагаете, что пользователь честен. Не говоря уже о том, что JS может быть отключен или изменен на стороне клиента. Но это совершенно другое обсуждение.
РЕДАКТИРОВАТЬ: забыли о вашем упоминании о выполнении проверки только один раз в день. Это потребует либо:
- Cookie (на стороне клиента)
- HTML5 LocalStorage (на стороне клиента)
- Сессия, где последняя проверка может быть предоставлена либо во время рендеринга страницы, либо посредством запроса AJAX. (сторона сервера с компонентом на стороне клиента)