我将用户的出生日期存储在时间戳中。我用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
答案 0 :(得分: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之间,则年龄是正确的。
答案 1 :(得分:0)
没关系,Date对象会占用你的闰年而不是闰秒:)
如果您经常使用日期,可能需要查看类似http://tempus-js.com/的内容,其中包括api方法,例如isLeapYear()。