多年前的 javascript 时间戳并考虑闰年

标签 javascript datetime date timestamp

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

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

谢谢

最佳答案

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

关于多年前的 javascript 时间戳并考虑闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737642/

相关文章:

javascript - 如何在循环 JavaScript 中跳过一个数字?

java - 当我拥有所有 Joda DateTime 对象时,如何使用 SWT 日历?

java - 只有毫秒的 SimpleDateFormat

java - 日期时间解析异常;无法在索引 4 处解析文本 '2018-10-18 00:00:00'

Python Xlsxwriter - 使日期尊重不同的区域设置格式

javascript - 如何在html中有多个屏幕并滑动这些屏幕

javascript - 我知道一个选择选项的部分值(value),我想用 JS 设置那个选项?

javascript - 如果调用了 JavaScript 事件监听器并且目标元素丢失,会发生什么情况?

python 从日期时间对象获取时区值

java - 将字符串转换为 java.util.date