Loading Ad...

āļ§āļīāļ˜āļĩāļ—āļĩāđˆāļ™āļąāļāļžāļąāļ’āļ™āļēāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđƒāļ™āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™: āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒāđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

āļ§āļīāļ˜āļĩāļ—āļĩāđˆāļ™āļąāļāļžāļąāļ’āļ™āļēāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđƒāļ™āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™: āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒāđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™
Loading Ad...

āļŠāļēāļĢāļšāļąāļ

āđƒāļ™āļ āļđāļĄāļīāļ—āļąāļĻāļ™āđŒāļ­āļąāļ™āļāļ§āđ‰āļēāļ‡āđƒāļŦāļāđˆāļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđ€āļ›āđ‡āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļģāļ„āļąāļāļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļœāļđāđ‰āđƒāļŠāđ‰āļ”āđ‰āļ§āļĒāļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡āđ„āļĄāđˆāļ§āđˆāļēāļ„āļļāļ“āļˆāļ°āļžāļąāļ’āļ™āļēāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļāļēāļĢāļ”āļđāđāļĨāļŠāļļāļ‚āļ āļēāļžāđāļšāļšāļŸāļ­āļĢāđŒāļĄāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™āļŦāļĢāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ§āļąāļ™āđ€āļāļīāļ”āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļāļēāļĢāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ§āļīāļ˜āļĩāļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđ€āļ›āđ‡āļ™āļ—āļąāļāļĐāļ°āļ—āļĩāđˆāļĄāļĩāļ„āđˆāļēāļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļēāļ—āļļāļāļ„āļ™āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ™āļĩāđ‰āļŠāļģāļĢāļ§āļˆāļ—āļļāļāļ­āļĒāđˆāļēāļ‡āļ•āļąāđ‰āļ‡āđāļ•āđˆāļŠāļđāļ•āļĢāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ‚āļąāđ‰āļ™āļžāļ·āđ‰āļ™āļāļēāļ™āđ„āļ›āļˆāļ™āļ–āļķāļ‡āđ€āļ—āļ„āļ™āļīāļ„āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āļąāđ‰āļ™āļŠāļđāļ‡āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ„āļļāļ“āļĄāļĩāļ„āļ§āļēāļĄāļĢāļđāđ‰āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ­āļēāļĒāļļāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļ‚āļ­āļ‡āļ„āļļāļ“āđ€āļ­āļ‡

āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ: āļžāļ·āđ‰āļ™āļāļēāļ™

āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđ€āļ›āđ‡āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ”āļīāļˆāļīāļ•āļ­āļĨāļ—āļĩāđˆāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ—āļĩāđˆāđāļ™āđˆāļ™āļ­āļ™āļ‚āļ­āļ‡āļšāļļāļ„āļ„āļĨāļŦāļĢāļ·āļ­āđ€āļ§āļĨāļēāļ—āļĩāđˆāļœāđˆāļēāļ™āđ„āļ›āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļŠāļ­āļ‡āļ§āļąāļ™āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđāļ™āļ§āļ„āļīāļ”āļ”āļđāđ€āļŦāļĄāļ·āļ­āļ™āļ•āļĢāļ‡āđ„āļ›āļ•āļĢāļ‡āļĄāļē - āļ„āļģāļ™āļ§āļ“āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ§āļąāļ™āļ—āļĩāđˆāđƒāļ™āļ§āļąāļ™āļ™āļĩāđ‰āđāļĨāļ°āļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ” - āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļœāļđāđ‰āļ‚āļąāļšāļ‚āļĩāđˆāļ•āđ‰āļ­āļ‡āđƒāļŦāđ‰āļ„āļ§āļēāļĄāļŠāļ™āđƒāļˆāļāļąāļšāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĄāļēāļāļĄāļēāļĒāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļĄāļĩāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ„āļ§āļēāļĄāļžāļķāļ‡āļžāļ­āđƒāļˆāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰

āļ—āļģāđ„āļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļˆāļķāļ‡āļĄāļĩāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāđƒāļ™āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ

āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļĄāļĩāļˆāļļāļ”āļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđƒāļ™āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļĄāļēāļāļĄāļēāļĒāđƒāļ™āļŦāļĨāļēāļĒ āđ† āđ‚āļ”āđ€āļĄāļ™:

  • āļĢāļ°āļšāļšāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™āļœāļđāđ‰āđƒāļŠāđ‰: āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļīāļ—āļ˜āļīāđŒāļ­āļēāļĒāļļāļŠāļģāļŦāļĢāļąāļšāļšāļĢāļīāļāļēāļĢ
  • āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļāļēāļĢāļ”āļđāđāļĨāļŠāļļāļ‚āļ āļēāļž: āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ—āļĩāđˆāđāļĄāđˆāļ™āļĒāļģāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĢāļ°āđ€āļĄāļīāļ™āļ—āļēāļ‡āļāļēāļĢāđāļžāļ—āļĒāđŒ
  • āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ—āļĢāļąāļžāļĒāļēāļāļĢāļĄāļ™āļļāļĐāļĒāđŒ: āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļāļēāļĢāļˆāđ‰āļēāļ‡āļ‡āļēāļ™āļŦāļĢāļ·āļ­āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļāļēāļĢāđ€āļāļĐāļĩāļĒāļ“āļ­āļēāļĒāļļ
  • āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļāļēāļĢāļĻāļķāļāļĐāļē: āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļāļēāļĢāļĢāļąāļšāđ€āļ‚āđ‰āļēāđ€āļĢāļĩāļĒāļ™āļ‚āļ­āļ‡āđ‚āļĢāļ‡āđ€āļĢāļĩāļĒāļ™
  • āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™āļ„āļ§āļēāļĄāļšāļąāļ™āđ€āļ—āļīāļ‡: āļāļēāļĢāļāļĢāļ­āļ‡āđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļąāļšāļ­āļēāļĒāļļ
  • āļšāļĢāļīāļāļēāļĢāļ—āļēāļ‡āļāļēāļĢāđ€āļ‡āļīāļ™: āļāļēāļĢāļ§āļēāļ‡āđāļœāļ™āļ—āļēāļ‡āļāļēāļĢāđ€āļ‡āļīāļ™āļ•āļēāļĄāļ­āļēāļĒāļļāđāļĨāļ°āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļāļēāļĢāļ›āļĢāļ°āļāļąāļ™āļ āļąāļĒ

āļ™āļ­āļāđ€āļŦāļ™āļ·āļ­āļˆāļēāļāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ­āļĒāđˆāļēāļ‡āļ”āļĩāļŠāđˆāļ§āļĒāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļœāļđāđ‰āđƒāļŠāđ‰āđ‚āļ”āļĒāļāļēāļĢāļāļģāļˆāļąāļ”āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡āđāļĨāļ°āļĨāļ”āļĢāļ°āļĒāļ°āļ‚āļ­āļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒāļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļāļŠāļšāļēāļĒāļ”āļąāļ‡āļāļĨāđˆāļēāļ§āļĄāļēāļāļ‚āļķāđ‰āļ™āđ€āļžāļ·āđˆāļ­āļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāđ„āļ”āđ‰āđ€āļ›āļĢāļĩāļĒāļšāđƒāļ™āļāļēāļĢāđāļ‚āđˆāļ‡āļ‚āļąāļ™

āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ™āļąāļāļžāļąāļ’āļ™āļēāļŠāļēāļĄāļēāļĢāļ–āļ™āļģāđ„āļ›āđƒāļŠāđ‰āđ„āļ”āđ‰

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđƒāļ™āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļ:

  1. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļĄāļēāļ•āļĢāļāļēāļ™: āļ„āļģāļ™āļ§āļ“āļ›āļĩāđ€āļ”āļ·āļ­āļ™āđāļĨāļ°āļ§āļąāļ™āļ™āļąāļšāļ•āļąāđ‰āļ‡āđāļ•āđˆāļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ”āļˆāļ™āļ–āļķāļ‡āļ§āļąāļ™āļ—āļĩāđˆāļ›āļąāļˆāļˆāļļāļšāļąāļ™
  2. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļ‚āļ­āļ‡āļ­āļēāļĒāļļ: āļ§āļąāļ”āđ€āļ§āļĨāļēāļ—āļĩāđˆāļœāđˆāļēāļ™āđ„āļ›āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļŠāļ­āļ‡āļ§āļąāļ™āđƒāļ” āđ†
  3. āļ§āļąāļ™āđ€āļāļīāļ”āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚: āļ—āļģāļ‡āļēāļ™āļĒāđ‰āļ­āļ™āļŦāļĨāļąāļ‡āļˆāļēāļāļ­āļēāļĒāļļāđ€āļžāļ·āđˆāļ­āļāļģāļŦāļ™āļ”āļ›āļĩāđ€āļāļīāļ”
  4. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ§āļąāļ™āļ—āļĩāđˆāđƒāļ™āļ­āļ™āļēāļ„āļ•: āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ­āļēāļĒāļļāđƒāļ™āļ§āļąāļ™āļ—āļĩāđˆāđƒāļ™āļ­āļ™āļēāļ„āļ•āļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡
  5. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĻāļ™āļīāļĒāļĄ: āđāļŠāļ”āļ‡āļ­āļēāļĒāļļāđ€āļ›āđ‡āļ™āļˆāļģāļ™āļ§āļ™āļ—āļĻāļ™āļīāļĒāļĄāļĄāļēāļāļāļ§āđˆāļēāļ›āļĩ/āđ€āļ”āļ·āļ­āļ™/āļ§āļąāļ™
  6. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāđāļ™āđˆāļ™āļ­āļ™: āļšāļąāļāļŠāļĩāļŠāļģāļŦāļĢāļąāļšāļ›āļĩāļāļĢāļ°āđ‚āļ”āļ”āđāļĨāļ°āļ„āļ§āļēāļĄāļĒāļēāļ§āđ€āļ”āļ·āļ­āļ™āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āļŠāļģāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģ

āļŠāļđāļ•āļĢāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļē

āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ‚āļąāđ‰āļ™āļžāļ·āđ‰āļ™āļāļēāļ™āđƒāļ™ JavaScript

āļ§āļīāļ˜āļĩāļāļēāļĢāļžāļ·āđ‰āļ™āļāļēāļ™āđƒāļ™āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļšāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļŠāļ­āļ‡āļ§āļąāļ™āļ™āļĩāđˆāļ„āļ·āļ­āļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļ JavaScript āļ­āļĒāđˆāļēāļ‡āļ‡āđˆāļēāļĒ:

function calculateAge(birthDate) {
 	const today = new Date();
 	const birth = new Date(birthDate);
 	let yearsDiff = today.getFullYear() - birth.getFullYear();
 	let monthsDiff = today.getMonth() - birth.getMonth();
 	let daysDiff = today.getDate() - birth.getDate();
 	// Adjust for negative months or days
 	if (daysDiff < 0) {
 	 	monthsDiff--;
 	 	// Get days in previous month
 	 	const previousMonth = new Date(today.getFullYear(), today.getMonth(), 0);
 	 	daysDiff += previousMonth.getDate();
 	}
 	if (monthsDiff < 0) {
 	 	yearsDiff--;
 	 	monthsDiff += 12;
 	}
 	return {
 	 	years: yearsDiff,
 	 	months: monthsDiff,
 	 	days: daysDiff
 	};
}

āļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āļ™āļĩāđ‰āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ‚āļąāđ‰āļ™āļžāļ·āđ‰āļ™āļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļ·āļšāļ„āđ‰āļ™ "āļ‰āļąāļ™āļ­āļēāļĒāļļāđ€āļ—āđˆāļēāđ„āļŦāļĢāđˆ" āđāļ•āđˆāļ™āļąāļāļžāļąāļ’āļ™āļēāļ„āļ§āļĢāļ—āļĢāļēāļšāļ§āđˆāļēāļāļĢāļ“āļĩāļ‚āļ­āļš - āđ€āļŠāđˆāļ™āļāļēāļĢāļāđ‰āļēāļ§āļāļĢāļ°āđ‚āļ”āļ”āļ›āļĩāđāļĨāļ°āļ„āļ§āļēāļĄāļĒāļēāļ§āđ€āļ”āļ·āļ­āļ™āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™ - āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļžāļīāļˆāļēāļĢāļ“āļēāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāđāļ™āđˆāļ™āļ­āļ™

āļāļēāļĢāļšāļąāļāļŠāļĩāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļāļĢāļ°āđ‚āļ”āļ”āļ›āļĩāđāļĨāļ°āđ€āļ”āļ·āļ­āļ™āļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒ

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ—āļĩāđˆāđāļĄāđˆāļ™āļĒāļģāđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āđƒāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģ (āđ€āļŠāđˆāļ™āļāļēāļĢāļ”āļđāđāļĨāļŠāļļāļ‚āļ āļēāļžāļŦāļĢāļ·āļ­āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ—āļēāļ‡āļāļŽāļŦāļĄāļēāļĒ) āļāļēāļĢāļšāļąāļāļŠāļĩāļŠāļģāļŦāļĢāļąāļšāļ›āļĩāļ—āļĩāđˆāļāđ‰āļēāļ§āļāļĢāļ°āđ‚āļ”āļ”āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļ:

function isLeapYear(year) {
 	return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}
function getDaysInMonth(year, month) {
 	// Month is 0-indexed in JavaScript Date
 	return new Date(year, month + 1, 0).getDate();
}

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļ‚āļ­āļ‡āļ­āļēāļĒāļļāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļŠāļ­āļ‡āļ§āļąāļ™āļ—āļĩāđˆāđ€āļ‰āļžāļēāļ°āđ€āļˆāļēāļ°āļˆāļ‡

āļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļ­āļēāļĒāļļāļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļāļąāļšāļŠāļ­āļ‡āļ§āļąāļ™āđƒāļ” āđ† :

function calculateDateDifference(startDate, endDate) {
 	const start = new Date(startDate);
 	const end = new Date(endDate);
 	 	if (end < start) {
 	 	// Swap dates if end is before start
 	 	[start, end] = [end, start];
 	}
 	 	let years = end.getFullYear() - start.getFullYear();
 	let months = end.getMonth() - start.getMonth();
 	let days = end.getDate() - start.getDate();
 	 	// Adjust for negative values
 	if (days < 0) {
 	 	months--;
 	 	days += getDaysInMonth(end.getFullYear(), end.getMonth() - 1);
 	}
 	 	if (months < 0) {
 	 	years--;
 	 	months += 12;
 	}
 	 	return { years, months, days };
}

āļāļēāļĢāđƒāļŠāđ‰āđāļ­āļžāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒāđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

Age Calculator Interface

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ HTML āļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

āļĢāļēāļāļāļēāļ™āļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ­āļ­āļ™āđ„āļĨāļ™āđŒāđƒāļ” āđ† āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ”āđ‰āļ§āļĒāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ HTML āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āļ‡āđˆāļēāļĒāđāļĨāļ°āđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒ:

<div class="age-calculator-container">
 	<h2>Age Calculator</h2>
 	<div class="input-section">
 	 	<div class="date-input">
 	 	 	 	<label for="birth-date">Date of Birth:</label>
 	 	 	 	<input type="date" id="birth-date" name="birth-date">
 	 	</div>
 	 	<div class="date-input optional">
 	 	 	 	<label for="calculation-date">Calculate Age on Date (optional):</label>
 	 	 	 	<input type="date" id="calculation-date" name="calculation-date">
 	 	</div>
 	 	<button id="calculate-btn">Calculate Age</button>
 	</div>
 	<div class="results-section">
 	 	<div id="age-result"></div>
 	 	<div id="next-birthday"></div>
 	</div>
</div>

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ™āļĩāđ‰āđƒāļŦāđ‰āļĢāļēāļāļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ§āļąāļ™āđ€āļāļīāļ”āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ›āđ‰āļ­āļ™āļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ”āđāļĨāļ°āļĢāļ°āļšāļļāļ§āļąāļ™āļ—āļĩāđˆāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļ

āļˆāļąāļ”āđāļ•āđˆāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļ‚āļ­āļ‡āļ„āļļāļ“āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļ”āļĩāļ‚āļķāđ‰āļ™

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ CSS āļ—āļĩāđˆāļĢāļ­āļšāļ„āļ­āļš:

.age-calculator-container {
 	max-width: 600px;
 	margin: 0 auto;
 	padding: 20px;
 	border-radius: 8px;
 	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.input-section {
 	display: flex;
 	flex-direction: column;
 	gap: 16px;
 	margin-bottom: 24px;
}
.date-input {
 	display: flex;
 	flex-direction: column;
 	gap: 8px;
}
input[type="date"] {
 	padding: 10px;
 	border: 1px solid #ddd;
 	border-radius: 4px;
 	font-size: 16px;
}
button#calculate-btn {
 	padding: 12px 16px;
 	background-color: #4285f4;
 	color: white;
 	border: none;
 	border-radius: 4px;
 	cursor: pointer;
 	font-size: 16px;
 	transition: background-color 0.2s;
}
button#calculate-btn:hover {
 	background-color: #3367d6;
}
.results-section {
 	margin-top: 24px;
 	padding: 16px;
 	background-color: #f9f9f9;
 	border-radius: 4px;
}
/* Responsive adjustments */
@media (max-width: 480px) {
 	.age-calculator-container {
 	 	padding: 15px;
 	}
 	 	input[type="date"] {
 	 	padding: 8px;
 	}
}

āļĢāļđāļ›āđāļšāļšāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļ—āļģāđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāđ„āļ”āđ‰āļ§āđˆāļēāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ§āđ‡āļšāļ­āļēāļĒāļļāļ‚āļ­āļ‡āļ„āļļāļ“āļĒāļąāļ‡āļ„āļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āđƒāļ™āļ‚āļ™āļēāļ”āļ­āļļāļ›āļāļĢāļ“āđŒāļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āļ‹āļķāđˆāļ‡āļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļĄāļ·āļ­āļ–āļ·āļ­

āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ JavaScript āļŠāļģāļŦāļĢāļąāļšāļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļš

Code Visualization

JavaScript āļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļĢāļ§āļĄāļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ‚āļ­āļ‡āđ€āļĢāļēāļāļąāļšāļ•āļąāļ§āļˆāļąāļ”āļāļēāļĢāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒ:

document.addEventListener('DOMContentLoaded', () => {
 	const birthDateInput = document.getElementById('birth-date');
 	const calculationDateInput = document.getElementById('calculation-date');
 	const calculateBtn = document.getElementById('calculate-btn');
 	const ageResult = document.getElementById('age-result');
 	const nextBirthdayResult = document.getElementById('next-birthday');
 	 	// Set default max date to today
 	birthDateInput.max = new Date().toISOString().split('T')[0];
 	calculateBtn.addEventListener('click', () => {
 	 	if (!birthDateInput.value) {
 	 	 	 	ageResult.innerHTML = '<p class="error">Please enter a date of birth.</p>';
 	 	 	 	return;
 	 	}
 	 	const birthDate = new Date(birthDateInput.value);
 	 	let referenceDate = new Date();
 	 	 	if (calculationDateInput.value) {
 	 	 	 	referenceDate = new Date(calculationDateInput.value);
 	 	}
 	 	// Calculate age
 	 	const age = calculatePreciseAge(birthDate, referenceDate);
 	 	// Display result
 	 	ageResult.innerHTML = `
 	 	 	 	<h3>Age Result:</h3>
 	 	 	 	<p class="age-display">${age.years} years, ${age.months} months, and ${age.days} days</p>
 	 	 	 	<p class="age-in-days">Total: ${age.totalDays} days</p>
 	 	`;
 	 	// Calculate and display next birthday
 	 	const nextBirthday = calculateNextBirthday(birthDate, referenceDate);
 	 	nextBirthdayResult.innerHTML = `
 	 	 	 	<h3>Next Birthday:</h3>
 	 	 	 	<p>Your next birthday is in ${nextBirthday.months} months and ${nextBirthday.days} days.</p>
 	 	`;
 	});
 	function calculatePreciseAge(birthDate, currentDate) {
 	 	let years = currentDate.getFullYear() - birthDate.getFullYear();
 	 	let months = currentDate.getMonth() - birthDate.getMonth();
 	 	let days = currentDate.getDate() - birthDate.getDate();
 	 	let totalDays = Math.floor((currentDate - birthDate) / (1000 * 60 * 60 * 24));
 	 	// Adjust for negative days
 	 	if (days < 0) {
 	 	 	 	months--;
 	 	 	 	// Get days in the previous month
 	 	 	 	const prevMonthDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 0);
 	 	 	 	days += prevMonthDate.getDate();
 	 	}
 	 	// Adjust for negative months
 	 	if (months < 0) {
 	 	 	 	years--;
 	 	 	 	months += 12;
 	 	}
 	 	return { years, months, days, totalDays };
 	}
 	 	function calculateNextBirthday(birthDate, currentDate) {
 	 	const nextBirthday = new Date(currentDate.getFullYear(), birthDate.getMonth(), birthDate.getDate());
 	 	// If birthday has passed this year, calculate for next year
 	 	if (nextBirthday < currentDate) {
 	 	 	 	nextBirthday.setFullYear(nextBirthday.getFullYear() + 1);
 	 	}
 	 	const diffTime = nextBirthday - currentDate;
 	 	const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
 	 	const months = Math.floor(diffDays / 30);
 	 	const days = diffDays % 30;
 	 	 	return { months, days };
 	}
});

āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ™āļĩāđ‰āļŠāļĢāđ‰āļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ‹āļķāđˆāļ‡āđ„āļĄāđˆāđ€āļžāļĩāļĒāļ‡ āđāļ•āđˆāļšāļ­āļāļœāļđāđ‰āđƒāļŠāđ‰āļ§āđˆāļē "āļ‰āļąāļ™āļ­āļēāļĒāļļāđ€āļ—āđˆāļēāđ„āļŦāļĢāđˆ" āđāļ•āđˆāļĒāļąāļ‡āđƒāļŦāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ§āļąāļ™āđ€āļāļīāļ”āļ„āļĢāļąāđ‰āļ‡āļ•āđˆāļ­āđ„āļ›āļ‚āļ­āļ‡āļžāļ§āļāđ€āļ‚āļē

āļ„āļļāļ“āļĨāļąāļāļĐāļ“āļ°āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ‚āļąāđ‰āļ™āļŠāļđāļ‡āļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļē

āļāļēāļĢāđƒāļŠāđ‰āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļēāļĒāļļāđƒāļ™āļĢāļđāļ›āđāļšāļš

Age Validation Flowchart

āļāļĢāļ“āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļąāđˆāļ§āđ„āļ›āļŦāļ™āļķāđˆāļ‡āļāļĢāļ“āļĩāļŠāļģāļŦāļĢāļąāļšāļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ„āļ·āļ­āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļēāļĒāļļāļœāļđāđ‰āđƒāļŠāđ‰āđƒāļ™āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™:

function validateMinimumAge(birthDateString, minimumAge) {
 	const birthDate = new Date(birthDateString);
 	const today = new Date();
 	 	// Calculate age
 	let age = today.getFullYear() - birthDate.getFullYear();
 	const monthDifference = today.getMonth() - birthDate.getMonth();
 	 	// Adjust age if birthday hasn't occurred yet this year
 	if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {
 	 	age--;
 	}
 	 	return age >= minimumAge;
}
// Example usage in a form
const registrationForm = document.getElementById('registration-form');
registrationForm.addEventListener('submit', (e) => {
 	const birthDate = document.getElementById('birth-date').value;
 	if (!validateMinimumAge(birthDate, 18)) {
 	 	e.preventDefault();
 	 	alert('You must be at least 18 years old to register.');
 	}
});

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļĢāļąāļšāļĢāļđāđ‰āļ–āļķāļ‡āđ€āļ§āļĨāļēāđ‚āļ‹āļ™

āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļĄāļĩāļœāļđāđ‰āđƒāļŠāđ‰āļ—āļąāđˆāļ§āđ‚āļĨāļāļāļēāļĢāļšāļąāļāļŠāļĩāļŠāļģāļŦāļĢāļąāļšāđ€āļ‚āļ•āđ€āļ§āļĨāļēāđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļ:

function calculateAgeWithTimeZone(birthDateString, timeZone) {
 	// Get current date in specified time zone
 	const options = { timeZone, year: 'numeric', month: 'numeric', day: 'numeric' };
 	const formatter = new Intl.DateTimeFormat('en-US', options);
 	const currentDateParts = formatter.formatToParts(new Date());
 	 	// Extract year, month, day from formatted parts
 	const currentDateObj = currentDateParts.reduce((acc, part) => {
 	 	if (part.type === 'year' || part.type === 'month' || part.type === 'day') {
 	 	 	 	acc[part.type] = parseInt(part.value);
 	 	}
 	 	return acc;
 	}, {});
 	 	// Adjust month (JavaScript months are 0-indexed)
 	currentDateObj.month -= 1;
 	 	const currentDate = new Date(currentDateObj.year, currentDateObj.month, currentDateObj.day);
 	const birthDate = new Date(birthDateString);
 	 	// Calculate age using the time-zone adjusted current date
 	return calculatePreciseAge(birthDate, currentDate);
}

āļŠāļĢāđ‰āļēāļ‡ API āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

āļŠāļģāļŦāļĢāļąāļšāļ™āļąāļāļžāļąāļ’āļ™āļēāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŦāđ‰āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāđ€āļ›āđ‡āļ™āļšāļĢāļīāļāļēāļĢāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ API āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđ‚āļ”āļĒāđƒāļŠāđ‰ node.js āļ™āļąāđ‰āļ™āļ•āļĢāļ‡āđ„āļ›āļ•āļĢāļ‡āļĄāļē:

// Using Express.js
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/calculate-age', (req, res) => {
 	try {
 	 	const { birthDate, referenceDate } = req.body;
 	 	 	if (!birthDate) {
 	 	 	 	return res.status(400).json({ error: 'Birth date is required' });
 	 	}
 	 	 	const birthDateObj = new Date(birthDate);
 	 	const referenceDateObj = referenceDate ? new Date(referenceDate) : new Date();
 	 	 	// Validate dates
 	 	if (isNaN(birthDateObj.getTime())) {
 	 	 	 	return res.status(400).json({ error: 'Invalid birth date format' });
 	 	}
 	 	 	if (isNaN(referenceDateObj.getTime())) {
 	 	 	 	return res.status(400).json({ error: 'Invalid reference date format' });
 	 	}
 	 	 	// Calculate age
 	 	const age = calculatePreciseAge(birthDateObj, referenceDateObj);
 	 	 	res.json({ age });
 	} catch (error) {
 	 	res.status(500).json({ error: 'Server error calculating age' });
 	}
});
app.listen(3000, () => {
 	console.log('Age calculator API running on port 3000');
});

API āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļĢāļēāļāļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāļšāļĢāļīāļāļēāļĢāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ™āļąāļāļžāļąāļ’āļ™āļēāļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļĢāļ§āļĄāđ€āļ‚āđ‰āļēāļāļąāļšāļŦāļĨāļēāļĒāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

āļŠāļĢāđ‰āļēāļ‡āļ„āļ§āļēāļĄāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

āđ€āļĄāļ·āđˆāļ­āļžāļąāļ’āļ™āļēāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļŦāļĢāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļ§āļĢāļĄāļĩāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļ:

  1. āļāļēāļĢāļ™āļģāļ—āļēāļ‡āđāļ›āđ‰āļ™āļžāļīāļĄāļžāđŒ: āļ•āļĢāļ§āļˆāļŠāļ­āļšāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļ­āļīāļ™āļžāļļāļ•āđāļĨāļ°āļ›āļļāđˆāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āļœāđˆāļēāļ™āđāļ›āđ‰āļ™āļžāļīāļĄāļžāđŒ
  2. āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļ‚āļ­āļ‡āļ•āļąāļ§āļ­āđˆāļēāļ™āļŦāļ™āđ‰āļēāļˆāļ­: āđƒāļŠāđ‰āļ‰āļĨāļēāļ ARIA āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđāļĨāļ°āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ HTML
  3. āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļŠāļđāļ‡: āđƒāļŦāđ‰āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļŠāļĩāļ—āļĩāđˆāđ€āļžāļĩāļĒāļ‡āļžāļ­āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ­āđˆāļēāļ™āļ—āļĩāđˆāļ”āļĩāļ‚āļķāđ‰āļ™
  4. āļĨāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”: āļĢāļ°āļšāļļāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļĒāđˆāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™
  5. āļŦāļĨāļēāļĒāļĢāļđāļ›āđāļšāļšāļ­āļīāļ™āļžāļļāļ•: āļ­āļ™āļļāļāļēāļ•āļĢāļđāļ›āđāļšāļšāļ­āļīāļ™āļžāļļāļ•āļ§āļąāļ™āļ—āļĩāđˆāļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđ€āļĄāļ·āđˆāļ­āđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļ”āđ‰
<!-- Accessible date input example -->
<div class="date-input">
 	<label for="birth-date" id="birth-date-label">Date of Birth:</label>
 	<input
 	 	type="date"
 	 	id="birth-date"
 	 	name="birth-date"
 	 	aria-labelledby="birth-date-label"
 	 	aria-describedby="birth-date-format"
 	>
 	<span id="birth-date-format" class="visually-hidden">
 	 	Please enter date in format MM/DD/YYYY
 	</span>
</div>

āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

āđāļĄāđ‰āđāļ•āđˆāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ‡āđˆāļēāļĒ āđ† āđ€āļŠāđˆāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļāđ‡āļ„āļ§āļĢāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž:

  1. āļĨāļ”āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ DOM āđƒāļŦāđ‰āļ™āđ‰āļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”: āđāļ„āļŠāļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļš DOM āđāļĨāļ°āļ­āļąāļ›āđ€āļ”āļ•āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž
  2. āļāļēāļĢāļ„āļģāļ™āļ§āļ“ debounce: āļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒāđƒāļŠāđ‰ debouncing
  3. āđƒāļŠāđ‰āđ„āļĨāļšāļĢāļēāļĢāļĩāļ§āļąāļ™āļ—āļĩāđˆāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž: āļžāļīāļˆāļēāļĢāļ“āļēāđ„āļĨāļšāļĢāļēāļĢāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ§āļąāļ™āļ—āļĩāđˆāļĄāļĩāļ™āđ‰āļģāļŦāļ™āļąāļāđ€āļšāļēāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™
  4. āđāļ„āļŠāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰: āļˆāļąāļ”āđ€āļāđ‡āļšāļœāļĨāļĨāļąāļžāļ˜āđŒāļĨāđˆāļēāļŠāļļāļ”āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāļ„āļģāļ™āļ§āļ“āđƒāļŦāļĄāđˆ
// Implementing debounce for real-time age calculation
function debounce(func, wait) {
 	let timeout;
 	return function() {
 	 	const context = this;
 	 	const args = arguments;
 	 	clearTimeout(timeout);
 	 	timeout = setTimeout(() => func.apply(context, args), wait);
 	};
}
const debouncedCalculate = debounce(() => {
 	// Age calculation logic
 	calculateAndDisplayAge();
}, 300);
birthDateInput.addEventListener('input', debouncedCalculate);

āļ‚āđ‰āļ­āļ„āļ§āļĢāļžāļīāļˆāļēāļĢāļ“āļēāļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļŠāļģāļŦāļĢāļąāļšāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļ

āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ­āļēāļˆāļ”āļđāđ€āļŦāļĄāļ·āļ­āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ‡āđˆāļēāļĒ āđ† āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĒāļąāļ‡āļ„āļ‡āļĄāļĩāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļ:

  1. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ­āļīāļ™āļžāļļāļ•: āļ†āđˆāļēāđ€āļŠāļ·āđ‰āļ­āļ§āļąāļ™āļ—āļĩāđˆāđƒāļ™āļ§āļąāļ™āļ—āļĩāđˆāđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāļ‚āļ­āļ‡ XSS
  2. āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāđ€āļ›āļīāļ”āđ€āļœāļĒāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ­āđˆāļ­āļ™: āļĢāļ°āļĄāļąāļ”āļĢāļ°āļ§āļąāļ‡āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļŠāđˆāļ‡āļ„āļ·āļ™
  3. āļāļēāļĢ āļˆāļģāļāļąāļ” āļ­āļąāļ•āļĢāļē: āļāļēāļĢ āļˆāļģāļāļąāļ” āļ­āļąāļ•āļĢāļēāļāļēāļĢ āļˆāļģāļāļąāļ” āļŠāļģāļŦāļĢāļąāļš APIs āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ
  4. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļąāđˆāļ‡āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđ€āļ—āļĩāļĒāļšāļāļąāļšāļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ: āđƒāļŠāđ‰āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ­āļĒāđˆāļēāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļēāļĒāļļāļ—āļĩāđˆāļŠāļģāļ„āļąāļ

āļāļēāļĢāļĢāļ§āļĄāđ„āļĨāļšāļĢāļēāļĢāļĩāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ‚āļ­āļ‡āļšāļļāļ„āļ„āļĨāļ—āļĩāđˆāļŠāļēāļĄ

āđ„āļĨāļšāļĢāļēāļĢāļĩ JavaScript āļĒāļ­āļ”āļ™āļīāļĒāļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļ

āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļŦāļĨāļēāļĒāđāļŦāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™:

  1. moment.js: āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ§āļąāļ™āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ
const moment = require('moment');
function calculateAge(birthdate) {
 	const today = moment();
 	const birthDate = moment(birthdate);
 	 	const years = today.diff(birthDate, 'years');
 	birthDate.add(years, 'years');
 	 	const months = today.diff(birthDate, 'months');
 	birthDate.add(months, 'months');
 	 	const days = today.diff(birthDate, 'days');
 	 	return { years, months, days };
}
  1. Date-FNS: āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒāļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļēāļĢāđ€āļ‚āļĒāđˆāļēāļ•āđ‰āļ™āđ„āļĄāđ‰
import { differenceInYears, differenceInMonths, differenceInDays } from 'date-fns';
function calculateAge(birthdate) {
 	const today = new Date();
 	const birthDate = new Date(birthdate);
 	 	const years = differenceInYears(today, birthDate);
 	const months = differenceInMonths(today, birthDate) % 12;
 	const days = differenceInDays(today, birthDate) % 30; // Approximation
 	 	return { years, months, days };
}
  1. Luxon: āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļ—āļĩāđˆāļ—āļĢāļ‡āļžāļĨāļąāļ‡āļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆāļ„āļ§āļēāļĄāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ„āļ”āđ‰
const { DateTime } = require('luxon');
function calculateAge(birthdate) {
 	const today = DateTime.local();
 	const birthDate = DateTime.fromISO(birthdate);
 	 	const diff = today.diff(birthDate, ['years', 'months', 'days']).toObject();
 	 	return {
 	 	years: Math.floor(diff.years),
 	 	months: Math.floor(diff.months),
 	 	days: Math.floor(diff.days)
 	};
}

āđ€āļĄāļ·āđˆāļ­āđƒāļ”āļ„āļ§āļĢāđƒāļŠāđ‰āđ„āļĨāļšāļĢāļēāļĢāļĩāļ‚āļ­āļ‡āļšāļļāļ„āļ„āļĨāļ—āļĩāđˆāļŠāļēāļĄāđ€āļ—āļĩāļĒāļšāļāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡

āļžāļīāļˆāļēāļĢāļ“āļēāļ›āļąāļˆāļˆāļąāļĒāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āđ€āļĄāļ·āđˆāļ­āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļĢāļŦāļąāļŠāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āđāļĨāļ°āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”:

āļ›āļąāļˆāļˆāļąāļĒāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļšāļļāļ„āļ„āļĨāļ—āļĩāđˆāļŠāļēāļĄ
āļ‚āļ™āļēāļ”āļĄāļąāļ”āđ€āļĨāđ‡āļāļĨāļ‡āļ–āđ‰āļēāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒāđƒāļŦāļāđˆāļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļšāļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āđ€āļ•āđ‡āļĄāļĢāļđāļ›āđāļšāļš
āļāļēāļĢāļ‹āđˆāļ­āļĄāļšāļģāļĢāļļāļ‡āļŠāļđāļ‡āļāļ§āđˆāļē (āļ„āļļāļ“āļĢāļąāļāļĐāļēāļĢāļŦāļąāļŠ)āļ•āđˆāļģāļāļ§āđˆāļē (āļ”āļđāđāļĨāđ‚āļ”āļĒāļŠāļļāļĄāļŠāļ™)
āļāļēāļĢāļ›āļĢāļąāļšāđāļ•āđˆāļ‡āļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāļ­āļĒāđˆāļēāļ‡āđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļˆāļģāļāļąāļ” āđ‚āļ”āļĒ Library API
āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ„āļŠāļ‚āļ­āļšāļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ­āļĒāđˆāļēāļ‡āļĢāļ­āļšāļ„āļ­āļšāļĄāļąāļāļˆāļ°āļœāđˆāļēāļ™āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ­āļĒāđˆāļēāļ‡āļ”āļĩ
āđ€āļŠāđ‰āļ™āđ‚āļ„āđ‰āļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļŠāđ‰āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ āļēāļĐāļēāļ—āļĩāđˆāļ„āļļāđ‰āļ™āđ€āļ„āļĒāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ API āļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰

āļ—āļ”āļŠāļ­āļšāļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ‚āļ­āļ‡āļ„āļļāļ“

āļŸāļąāļ‡āļāđŒāļŠāļąāđˆāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļāļēāļĢāļ—āļ”āļŠāļ­āļšāļŦāļ™āđˆāļ§āļĒ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ­āļĒāđˆāļēāļ‡āļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļĄāļąāđˆāļ™āđƒāļˆāđ„āļ”āđ‰āļ–āļķāļ‡āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļ‚āļ­āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ:

// Using Jest for testing
describe('Age Calculator Functions', () => {
 	test('Basic age calculation with birthdate in the past', () => {
 	 	// Mock current date to 2023-05-15
 	 	const mockDate = new Date(2023, 4, 15);
 	 	global.Date = jest.fn(() => mockDate);
 	 	 	const birthDate = new Date(1990, 2, 10); // March 10, 1990
 	 	const age = calculateAge(birthDate);
 	 	 	expect(age.years).toBe(33);
 	 	expect(age.months).toBe(2);
 	 	expect(age.days).toBe(5);
 	});
 	 	test('Age calculation with future reference date', () => {
 	 	const birthDate = new Date(2000, 0, 1); // January 1, 2000
 	 	const referenceDate = new Date(2030, 6, 15); // July 15, 2030
 	 	 	const age = calculateAgeBetweenDates(birthDate, referenceDate);
 	 	 	expect(age.years).toBe(30);
 	 	expect(age.months).toBe(6);
 	 	expect(age.days).toBe(14);
 	});
 	 	test('Edge case: Birth date is February 29 on leap year', () => {
 	 	const birthDate = new Date(2000, 1, 29); // February 29, 2000
 	 	const referenceDate = new Date(2023, 2, 1); // March 1, 2023
 	 	 	const age = calculateAgeBetweenDates(birthDate, referenceDate);
 	 	 	expect(age.years).toBe(23);
 	 	expect(age.months).toBe(0);
 	 	expect(age.days).toBe(1);
 	});
});

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļ‚āļ­āļ‡āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒ

āļ•āļĢāļ§āļˆāļŠāļ­āļšāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ‚āļ­āļ‡āļ„āļļāļ“āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āđƒāļ™āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ—āļąāđ‰āļ‡āļŦāļĄāļ”:

  1. āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī: āđƒāļŠāđ‰āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđāļ—āļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒ
  2. Input type fallbacks: Provide fallbacks for browsers that don't support input[type="date"]
  3. Polyfills: āļĢāļ§āļĄāđ‚āļžāļĨāļĩāļŸāļīāļĨāļ”āđŒāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļĢāļļāđˆāļ™āđ€āļāđˆāļē
  4. āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ—āļ”āļŠāļ­āļšāļ‚āđ‰āļēāļĄāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒ: āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļŠāđˆāļ™ BrowserStack āļŦāļĢāļ·āļ­ Sauce Labs āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ—āļ”āļŠāļ­āļš

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļˆāļĢāļīāļ‡

Cross-Platform Age Calculator

āļāļĢāļ“āļĩāļĻāļķāļāļĐāļē: āļĢāļ°āļšāļšāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™āļāļēāļĢāļ”āļđāđāļĨāļŠāļļāļ‚āļ āļēāļž

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļāļēāļĢāļ”āļđāđāļĨāļŠāļļāļ‚āļ āļēāļžāļ­āļēāļˆāđƒāļŠāđ‰āļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ­āļēāļĒāļļāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™āļœāļđāđ‰āļ›āđˆāļ§āļĒ:

function calculatePatientAgeDetails(dateOfBirth) {
 	const age = calculatePreciseAge(new Date(dateOfBirth), new Date());
 	 	// Determine age category for medical protocols
 	let ageCategory;
 	if (age.years < 2) {
 	 	ageCategory = 'infant';
 	} else if (age.years < 13) {
 	 	ageCategory = 'child';
 	} else if (age.years < 18) {
 	 	ageCategory = 'adolescent';
 	} else if (age.years < 65) {
 	 	ageCategory = 'adult';
 	} else {
 	 	ageCategory = 'senior';
 	}
 	 	// Calculate age in months for young children
 	const totalMonths = age.years * 12 + age.months;
 	 	return {
 	 	...age,
 	 	ageCategory,
 	 	totalMonths,
 	 	// Include whether special protocols apply
 	 	requiresPediatricProtocol: age.years < 18,
 	 	requiresGeriatricProtocol: age.years >= 65
 	};
}

āļāļĢāļ“āļĩāļĻāļķāļāļĐāļē: āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ­āļĩāļ„āļ­āļĄāđ€āļĄāļīāļĢāđŒāļ‹āļ—āļĩāđˆ āļˆāļģāļāļąāļ” āļ­āļēāļĒāļļ

āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ­āļĩāļ„āļ­āļĄāđ€āļĄāļīāļĢāđŒāļ‹āļ—āļĩāđˆāļ‚āļēāļĒāļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒāļ—āļĩāđˆ āļˆāļģāļāļąāļ” āļ­āļēāļĒāļļāļ­āļēāļˆāļ™āļģāđ„āļ›āđƒāļŠāđ‰:

function verifyPurchaseEligibility(dateOfBirth, productMinimumAge) {
 	const today = new Date();
 	const birthDate = new Date(dateOfBirth);
 	 	// Calculate age as of today
 	let age = today.getFullYear() - birthDate.getFullYear();
 	 	// Adjust age if birthday hasn't occurred yet this year
 	if (
 	 	today.getMonth() < birthDate.getMonth() ||
 	 	(today.getMonth() === birthDate.getMonth() && today.getDate() < birthDate.getDate())
 	) {
 	 	age--;
 	}
 	 	return {
 	 	eligible: age >= productMinimumAge,
 	 	currentAge: age,
 	 	minimumAge: productMinimumAge,
 	 	// Calculate days until eligibility if not eligible
 	 	daysUntilEligible: age < productMinimumAge ?
 	 	 	 	calculateDaysUntilEligible(birthDate, productMinimumAge) : 0
 	};
}
function calculateDaysUntilEligible(birthDate, requiredAge) {
 	const today = new Date();
 	const eligibilityDate = new Date(birthDate);
 	 	eligibilityDate.setFullYear(birthDate.getFullYear() + requiredAge);
 	 	// If eligibility date has passed this year, calculate for next year
 	if (eligibilityDate < today) {
 	 	return 0;
 	}
 	 	const diffTime = Math.abs(eligibilityDate - today);
 	return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
}

āļŠāļĢāļļāļ›: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ•āđ‰āļ­āļ‡āļžāļīāļˆāļēāļĢāļ“āļēāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ­āļĒāđˆāļēāļ‡āļĢāļ­āļšāļ„āļ­āļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđƒāļ™āļāļēāļĢāļ„āļģāļ™āļ§āļ“āđāļĨāļ°āļāļēāļĢāļĢāļ§āļĄāđ€āļ‚āđ‰āļēāļāļąāļšāđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ—āļĩāđˆāļāļ§āđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļ‚āļ­āļ‡āļ„āļļāļ“āđ‚āļ”āļĒāļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āļ—āļĩāđˆ:

  1. āļŠāļđāļ•āļĢāļāļēāļĢāļ„āļģāļ™āļ§āļ“āļ—āļĩāđˆāđāļĄāđˆāļ™āļĒāļģāļ‹āļķāđˆāļ‡āļšāļąāļāļŠāļĩāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļāđ‰āļēāļ§āļāļĢāļ°āđ‚āļ”āļ”āļ›āļĩāđāļĨāļ°āļ„āļ§āļēāļĄāļĒāļēāļ§āđ€āļ”āļ·āļ­āļ™āļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™
  2. āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļŸāļ‹āļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒāļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļāļąāļšāļ­āļļāļ›āļāļĢāļ“āđŒ
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ‚āļ­āļ‡āļ„āļļāļ“āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āđ‚āļ”āļĒāļ—āļļāļāļ„āļ™
  4. āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļĢāļēāļšāļĢāļ·āđˆāļ™
  5. āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ­āļĒāđˆāļēāļ‡āļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ€āļžāļ·āđˆāļ­āļˆāļąāļšāđ€āļ„āļŠāļ‚āļ­āļš

āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāđ‚āļ”āļ”āđ€āļ”āđˆāļ™āđ€āļ›āđ‡āļ™āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ—āļĩāđˆāļĄāļĩāļ„āđˆāļēāļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“

āđ‚āļ›āļĢāļ”āļˆāļģāđ„āļ§āđ‰āļ§āđˆāļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļ—āļĩāđˆāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢāļāļĢāļ“āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļ‰āļžāļēāļ°āļ‚āļ­āļ‡āļ„āļļāļ“āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđƒāļŦāđ‰āļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļĩāđˆāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļĒāļ­āļ”āđ€āļĒāļĩāđˆāļĒāļĄāđ„āļĄāđˆāļ§āđˆāļēāļ„āļļāļ“āļˆāļ°āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ€āļ­āļ‡āļŦāļĢāļ·āļ­āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļˆāļēāļāļŦāđ‰āļ­āļ‡āļŠāļĄāļļāļ”āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāļŦāļĨāļąāļāļāļēāļĢāļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāđƒāļ™āļ„āļđāđˆāļĄāļ·āļ­āļ™āļĩāđ‰āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ„āļļāļ“āļŠāļĢāđ‰āļēāļ‡āđ‚āļ‹āļĨāļđāļŠāļąāļ™āļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ—āļĩāđˆāļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāļ‚āļ­āļ‡āļ„āļļāļ“

āļ—āļĢāļąāļžāļĒāļēāļāļĢāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚āļ­āļēāļĒāļļ

Trending searches

Showing 5/30 keywords
Auto refresh every 20 seconds
Loading Ad...