如何获取用户的年龄(以年为单位)

Posted

技术标签:

【中文标题】如何获取用户的年龄(以年为单位)【英文标题】:How do I get the user's age in years 【发布时间】:2021-05-30 13:38:03 【问题描述】:

我想在 javascript (ECMA) 中使用GeolocationDate 来询问用户在哪里 以及他们的出生时间并将其转换为年份。我问他们出生在哪里,因为我需要考虑不同的时区。

到目前为止,我的函数会返回用户的年龄:

function birth() 
  var their_birth_day = new Date("18 May 2005"); // Just as an example
  var today = new Date();

  var ms_old = today.getTime() - their_birth_day.getTime();
  var yrs_old = ms_old/3.154e+10;
  return yrs_old;

但是我如何使用他们的位置来使其更准确?

【问题讨论】:

你能解释更多吗? 另外请告诉我 yrs_old 表达式是什么 为什么需要 Geolocation API 来获取用户出生地?您提到时区,您可以使用 Date().getTimezoneOffset() @Tunjay 也许我不知道,我只是需要一种方法来解决时区差异,从而使我的 yrs_old 变量不精确。 @me.nkr yrs_old 是用户生日到今天之间的时间量,以年为单位。换句话说,用户的年龄。我没有四舍五入,但我会将其四舍五入到小数点后 3 位(但忽略这一点,因为这对这个问题并不重要)。 【参考方案1】:
function getAge( dateString ) 
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) 
        age--;
    
    return age;

【讨论】:

以上是关于如何获取用户的年龄(以年为单位)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Oracle 以年、月和日为单位获取年龄

python:要求用户输入本金,银行年利率和存款的时长(以年为单位),程序输出用户拿到的利息

如何准确获取“年”中两个 DateTime 对象之间的差异 [已关闭,使用 NodaTime] [重复]

R语言ggplot2可视化:自定义设置X轴上的时间间隔(中断以年为单位),使用scale_x_date()自定义设置坐标轴间隔和标签添加标题副标题题注信息

如何以年、日格式快速显示秒数

oracle中怎样以年为参数求出每个月数据的平均值以及月的最大值最小值