几年前的javascript时间戳,并考虑闰年

javascript timestamp from years ago and consider leap years

本文关键字:时间戳 闰年 javascript 几年      更新时间:2024-05-13

我将用户的出生日期存储在时间戳中。我用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);

在搜索页面中,我只有年龄字段。根据这个字段,我需要显示与这个年龄相匹配的用户。我根据年龄字段值时间戳进行计算,这样我就可以在数据库中使用它作为条件。

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

我的问题:这些方法闰年安全吗?或者我会因为闰年而遇到任何问题吗?我很确定第一部分是可以的(如果不可以的话请纠正我),但对于第二部分,当我根据年龄计算时间戳时,我不确定如何才能同时考虑闰年。有人知道吗?

Tnx

您在第二个样本中创建的日期对应于给定年份的1/1(因为您只提供默认为0的年、日和月)。这可能不是你想要的。

如果你想要今天某个年龄的人,你应该创建一个与今天相对应的日期,然后减去年份,例如:

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()

如果生日时间戳介于lowTimestamp和highTimestamp之间,则年龄是正确的。

没关系,Date对象会为您计算闰年,但不会计算闰秒:)

如果你经常和约会对象玩,你可能想看看这样的东西http://tempus-js.com/其中包括诸如isLeapYear()之类的api方法。