marca de tiempo de javascript de hace años y considerar años bisiestos

Guardo la fecha de nacimiento del usuario en la marca de tiempo. Calculo la marca de tiempo con javascript.

day = $("#birthday-day").val();
year = $("#birthday-year").val();
month = $("#birthday-month").val()-1;     
date = new Date(Date.UTC(year, month, day));
birthdateTimestamp = Math.round(date.getTime() / 1000);

En la página de búsqueda solo tengo el campo de edad. Depende de este campo. Necesito mostrar usuarios que coincidan con esta edad. Calculo a partir de la marca de tiempo del valor del campo de edad para poder usarlo en la base de datos como condición.

now = new Date();
age = $("#age").val();
date = new Date(Date.UTC(now.getFullYear()-age));
timestampYearsAgo = date.getTime()/1000;

Mi pregunta es: ¿Estos métodos son seguros para los años bisiestos o puedo tener algún problema debido a los años bisiestos? Estoy bastante seguro de que la primera parte está bien (corríjame si no, por favor), pero para la segunda parte cuando calculo la marca de tiempo a partir de la edad, no estoy seguro de cómo se podría hacer para que también se consideren los años bisiestos. ¿Alguien tiene alguna idea?

TNX

preguntado el 31 de julio de 12 a las 11:07

2 Respuestas

La fecha que crea en la segunda muestra corresponde a 1/1 del año dado (ya que solo proporciona el año, el día y el mes predeterminados en 0). Esto probablemente no es lo que quieres.

Si quiere personas que tengan cierta edad hoy, debe crear una fecha que corresponda a hoy y luego restar los años, por ejemplo:

var lowDate = new Date;
lowDate.setFullYear(lowDate.getFullYear() - age));
lowTimestamp = lowDate.getTime()
var highDate = new Date;
highDate .setFullYear(highDate .getFullYear() - age + 1));
highTimestamp = highDate.getTime()

Si una marca de tiempo de cumpleaños está entre lowTimestamp y highTimestamp, la edad es correcta.

Respondido 31 Jul 12, 11:07

Está bien, el objeto Date tendrá en cuenta los años bisiestos pero no los segundos bisiestos :)

Si está jugando mucho con las fechas, es posible que desee ver algo como http://tempus-js.com/ que incluye métodos api como isLeapYear().

Respondido 31 Jul 12, 11:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.