生日显示为去年的年龄?

2024-03-17

我正在测试一个我想在其中使用它的网站的 JavaScript 片段。基本上,当页面加载我的年龄时执行的函数。我是在规定的出生日期之外做这件事的。我在使用birthDate变量时注意到一个错误(不确定为什么会发生)。当birthDate月份比当前月份小1,并且日期至少比当前日期大1一直到当前日期时,就会发生错误(例如:今天的日期6月8日,从5月9日到6月8日的任何日期都会产生错误)

对于该片段,我输入了出生日期 5-9-1989。现在,当你或我计算时,我们都知道基于今天的日期 2015 年 6 月 8 日。年龄应该是 26。但由于某种原因,代码输出了数字 25,如下所示。

(注意:只要输入的birthDate变量中的月份比当前月份小1,并且日期至少比当前日期大1,就会发生错误,年份无关紧要。如果日期晚于或早于则月 - 1 和日 + n (n > 0) 表示错误未发生的日期)

任何有助于弄清楚为什么会发生此错误的帮助将不胜感激。

function myage() {
var birthDate = new Date(1989, 5, 9, 0, 0, 0, 0)

// The current date
var currentDate = new Date();

// The age in years
var age = currentDate.getFullYear() - birthDate.getFullYear();

// Compare the months
var month = currentDate.getMonth() - birthDate.getMonth();

// Compare the days
var day = currentDate.getDate() - birthDate.getDate();

// If the date has already happened this year
if ( month < 0 || month == 0 && day < 0 || month < 0 && day < 0 )
{
    age--;
}

document.write('I am ' + age + ' years old.');
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body onLoad="myage()">
</body>
</html>

很简单,这个月Date函数的指定范围为 0(一月)到 11(十二月)。只需将 5 更改为 4 即可指定五月。

引用自MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date:

month
代表月份的整数值,从 0 开始(1 月)到 11(12 月)。

function myage() {
var birthDate = new Date(1989, 4, 9, 0, 0, 0, 0)

// The current date
var currentDate = new Date();

// The age in years
var age = currentDate.getFullYear() - birthDate.getFullYear();

// Compare the months
var month = currentDate.getMonth() - birthDate.getMonth();

// Compare the days
var day = currentDate.getDate() - birthDate.getDate();

// If the date has already happened this year
if ( month < 0 || month == 0 && day < 0 || month < 0 && day < 0 )
{
    age--;
}

document.write('I am ' + age + ' years old.');
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body onLoad="myage()">
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生日显示为去年的年龄? 的相关文章

  • 无法在 JavaScript for 循环中读取 null 的属性“长度”

    我正在尝试制作一个像 Stack Overflow 那样的 Markdown 编辑器 如果我实际上没有在文本区域中键入星号和包含短语的 http 我会收到标题中列出的此错误 如果我只输入包含星号的短语 则错误指的是这一行 if linkif
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 创建一个简单的 10 秒倒计时

    我想要一行这样写的 Your download will begin in 10 9 8 etc Beginning on page load seconds 我已经设置了 10 秒下载文本 并且我还查看了其他 stackoverflow
  • 如何动态突出显示网页上的字符串?

    我想创建带有 url 的页面 例如 http xyzcorp schedules 2015Aug24 Aug28 Jim Hawkins http xyzcorp schedules 2015Aug24 Aug28 Billy Bones
  • 无法实例化模块 [$injector:unpr] 未知提供程序:$routeProvider

    我从 AngularJS 升级时收到此错误1 0 7 to 1 2 0rc1 ngRoute 模块不再是核心的一部分angular js文件 如果您继续使用 routeProvider 那么您现在需要包括angular route js在你
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 判断一个数字是否能被 3 或 5 整除 (FizzBu​​zz)

    如何根据输出是否能被 3 或 5 整除来更改输出 如果它能被 3 整除 我想显示 rock 如果它能被 5 整除 我想显示 star 类似于 FizzBu zz 如果两者都有 他们都会看到 这是我的代码 if var n Math floo
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 在 React Navigation 中将 props 传递给自定义抽屉导航器

    在反应导航抽屉菜单中 我想显示用户名 John Doe 它处于我的主要组件的状态 Router 我怎样才能将自定义抽屉内容组件传递给它 额外信息 我从 AsyncStorage 中获取此名称 组件已挂载 这是我的代码 export defa
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j
  • 强制输入数字小数位

    我想强制

随机推荐

  • 如何使用 Digital Ocean DNS 和 Nginx 设置全局负载平衡?

    UPDATE 请参阅下面我提供的答案 了解我最终在 AWS 上设置的解决方案 我目前正在尝试为 Digital Ocean 上的应用程序服务器实现全局负载平衡层的方法 但我还没有将一些内容放在一起 The Goal 通过将所有连接路由到 S
  • 如何在Java小程序中检测浏览器和操作系统

    我正在开发一个复杂的 Java 小程序 它在 Safari 以及 Windows 和 Linux 上的各种浏览器中运行良好 但在 Macintosh 的 Chrome 和 Firefox 中出现问题 对于调试来说 如果 Java 代码能够检
  • Spring @Transactional 服务。如果它调用另一个@Transactional Service 会发生什么?

    使用 Spring 我达到了以下场景 我有一项必须的服务 Transactional因为它调用了多个 DAO 但它也调用其他已经存在的服务 Transactional 不知何故 我会调用嵌套 Transactional服务 Spring会管
  • 指定的演员无效..如何解决此问题

    我有以下功能 public object Convert object value string retVal string Empty int oneMillion 1000000 retVal double value oneMilli
  • 共享邮箱上的 MailItem.GetConversation()

    我正在使用以下代码来显示对话中原始电子邮件的属性 void DemoConversation object selectedItem Application ActiveExplorer Selection 1 For this examp
  • 函数调用时找不到标识符错误

    我这里有一个程序 可以反转输入字符串的大小写 这是我的 cpp 文件中的代码 我使用的是 Visual Studio C IDE 我不确定头文件中需要什么 或者是否需要一个头文件才能完成这项工作 我的函数调用 swapCase 出错 由于某
  • Web API 2 中的版本控制

    有一个关于 Web Api 2 0 版本控制的快速问题 我开发了一个完全 RESTful API 但是我有 2 个同名的控制器 我已根据单独的文件夹将它们放入不同的命名空间中 例如 v1 和 v2 文件夹 我还使用正常的 Namespace
  • 如何将字典列表合并为单个字典?

    我怎样才能把字典列表变成这样 a 1 b 2 c 1 d 2 变成一个像这样的字典 a 1 b 2 c 1 d 2 Answers here will overwrite keys that match between two of the
  • 在多对多连接的位置进行序列化

    我希望有人能帮助我 我正在使用 Express js 的 Sequelize ORM 并且在 2 个表之间建立了有效的多对多关系 为了简化我的查询 让我们假装我的表是 Users Books 和 UserBooks 其中 UserBooks
  • 基于Cloud pub/sub队列自动扩展GCE实例组

    GCE 实例组可以根据 Google Cloud PubSub 队列计数或其他异步任务队列 例如 PSQ 扩大 缩小规模吗 Yes 该功能现在处于 alpha 阶段 https cloud google com compute docs a
  • 在块内循环以错误的顺序附加到数组 - Swift 2.0

    我从 Parse 下载了一个 PFFile 数组 我试图将它们转换为 NSData imageDataArray 数组 以便将它们保存到 Core Data 中 我现在遇到的唯一问题是 imageDataArray 的元素添加顺序错误 这意
  • Haskell 堆栈与全局 ghc

    是否可以使用stack已经安装了ghc没有stack安装本地副本ghc or cabal 是的 如果ghc in PATH是所选快照的正确版本 stack会很高兴地使用它 ghc version The Glorious Glasgow H
  • 用于验证管道分隔项目数量的正则表达式

    我有一个字符串 它是管道 划定的 我需要一个正则表达式来根据管道字符验证项目数量 因此 正则表达式将执行以下操作 如果最大项目数为三 asdfasdf asdfasdf asdfasdf 有效 asdfasdf asdfasdf asdfa
  • 如何让wxpython密码textctrl显示字符?

    使用 wxPython 可以将密码字段创建为 wx TextCtrl frm 1 style wx TE PASSWORD 我想知道是否有一种方法可以动态地将这个密码字段更改为普通的文本控件 以便用户可以看到密码是什么 创建控件后无法更改样
  • 在 ScrollView 中使用 RecyclerView 并具有灵活的 Recycler 项目高度

    我想知道是否有任何可能的方法可以使用回收视图 在此之前 我使用 RecyclerView固定高度里面一个滚动视图但这次我不知道该物品的高度 Hint 在问这个问题之前 我阅读了堆栈问题上的所有问题和解决方案 update 一些解决方案展示了
  • 使用 Mercurial,如何记录具有跨分支祖先的分支?

    在 Mercurial 中 我想构建所有提交消息的更改日志以进行修订stable分支 目前 我正在使用 hg log r
  • 使用 v4l2loopback 和 EDSDK Liveview 进行佳能 DSLR 视频环回?

    我想使用 DSLR 相机作为视频输入 例如在 Linux 和 Android 下进行 Skype Google talk 是否可以使用 v4l2loopback 和 Canon EDSDK 创建视频环回 如何将实时取景缓冲区从摄像机传输到视
  • 为什么 DataContractSerializer 不支持属性?

    我根据客户的文档创建 xsd 并且所有 xsd 都有属性 我一直在使用 xsd exe 从 xsd 生成类 但我读到 DataContractSerializer 不支持属性 为什么不 这是否意味着我只能有一个只有元素的soap xml 文
  • 关于 TypeScript 的 noUnusedParameters 编译器选项的说明

    在 GitHub 上输入任何内容之前 我试图确定这实际上是否是一个错误 With noUnusedParameters启用后 TypeScript 编译器会出现如下错误 const foo one two three foo forEach
  • 生日显示为去年的年龄?

    我正在测试一个我想在其中使用它的网站的 JavaScript 片段 基本上 当页面加载我的年龄时执行的函数 我是在规定的出生日期之外做这件事的 我在使用birthDate变量时注意到一个错误 不确定为什么会发生 当birthDate月份比当