2

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

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

肿瘤坏死因子

4

2 回答 2

1

您在第二个示例中创建的日期对应于给定年份的 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 之间,则年龄是正确的。

于 2012-07-31T10:47:26.153 回答
0

没关系, Date 对象将为您考虑闰年,但不考虑闰秒 :)

如果您经常玩日期,您可能想查看http://tempus-js.com/之类的内容,其中包含诸如 isLeapYear() 之类的 api 方法。

于 2012-07-31T10:50:16.547 回答