วิธีการคำนวณอายุใน JavaScript (DOB ถึงปี, เดือน, วัน)
เรียนรู้วิธีการคำนวณอายุจากวันเกิดใน JavaScript ที่ใช้งานได้จริง ประกอบด้วยปี เดือน วัน ตัวเลือก ณ วันที่ และข้อผิดพลาดทั่วไป เช่น เขตเวลาและปีอธิกสุรทิน
หากคุณต้องการคำนวณอายุของบุคคลจากวันเกิด (DOB) ใน JavaScript คุณสามารถทำได้หลายวิธี สิ่งสำคัญคือการตัดสินใจว่าคุณหมายถึงอะไรตาม อายุ:
- อายุในปีที่เสร็จสมบูรณ์ (พบมากที่สุด)
- อายุที่แน่นอน (ปี เดือน วัน)
- อายุ ณ วันที่ที่ระบุ (ไม่ใช่วันนี้เสมอไป)
1) คำนวณอายุในปีที่เสร็จสมบูรณ์ (ง่ายและถูกต้อง)
นี่เป็นแนวทางมาตรฐาน: ลบปีแล้วปรับเปลี่ยนหากวันเกิดปีนี้ยังไม่เกิดขึ้น
ฟังก์ชัน ageInYears(dob, asOf = new Date()) {
const เกิด = วันที่ใหม่ (dob);
const ref = วันที่ใหม่ (asOf);
ให้ปี = ref.getFullYear() -birth.getFullYear();
const m = ref.getMonth() - เกิด.getMonth();
ถ้า (m < 0 || (m === 0 && ref.getDate()
ตัวอย่าง: DOB 2000-02-10 และ ณ วันที่ 2026-02-09 ให้ 25 (พรุ่งนี้วันเกิด)
2) คำนวณอายุที่แน่นอน (ปี เดือน วัน)
หากคุณต้องการรายละเอียดที่แน่นอน คุณสามารถคำนวณปีแรก จากนั้นเดือน จากนั้นวันโดยการ "ยืม" จากเดือนก่อนหน้าเมื่อจำเป็น
ฟังก์ชันactAge(dob, asOf = new Date()) {
const เกิด = วันที่ใหม่ (dob);
const ref = วันที่ใหม่ (asOf);
ให้ปี = ref.getFullYear() -birth.getFullYear();
ให้เดือน = ref.getMonth() -birth.getMonth();
ให้วัน = ref.getDate() - Birth.getDate();
// ปรับวันโดยการยืมจากเดือนก่อนหน้า
ถ้า (วัน < 0) {
const prevMonth = วันที่ใหม่ (ref.getFullYear(), ref.getMonth(), 0); // วันที่ 0 = วันสุดท้ายของเดือนก่อน
วัน += prevMonth.getDate();
เดือน--;
}
// ปรับเดือนโดยการยืมจากปีก่อน
ถ้า (เดือน < 0) {
เดือน += 12;
ปี--;
}
กลับ { ปี, เดือน, วัน };
}
หมายเหตุ: กรณี Edge ของวันที่ของเดือน (เช่น DOB ในวันที่ 31) จำเป็นต้องมีการทดสอบอย่างรอบคอบ หากคุณต้องการสิ่งที่มีประสิทธิภาพในทุกภาษาและกรณี Edge ให้พิจารณาใช้ไลบรารีวันที่ที่ผ่านการทดสอบอย่างดี
3) ใช้วันที่ "ณ วันที่" สำหรับอายุของวันที่ในอดีตหรือในอนาคต
แอปจำนวนมากต้องมีอายุในวันที่อ้างอิงที่เฉพาะเจาะจง (การประกันภัย กฎการมีสิทธิ์ ตัดรอบปีการศึกษา) ทั้งสองฟังก์ชันด้านบนยอมรับพารามิเตอร์ asOf ดังนั้นคุณจึงสามารถดำเนินการ:
ageInYears('1995-06-20', '2030-01-01');
แน่นอนอายุ('1995-06-20', '2030-01-01');
ข้อผิดพลาดที่พบบ่อย (และวิธีหลีกเลี่ยง)
- เขตเวลา: การแยกวิเคราะห์
ปปปป-ดด-ววสามารถทำงานแตกต่างกันในสภาพแวดล้อมต่างๆ หากคุณสนใจเฉพาะวันที่ ให้สร้างวันที่ตามเวลาท้องถิ่น:วันที่ใหม่ (ปี, monthIndex, วัน). - วันเกิดวันอธิกสุรทิน: ตัดสินใจกฎของคุณสำหรับวันที่ 29 กุมภาพันธ์ในปีที่ไม่ใช่ปีอธิกสุรทิน (28 กุมภาพันธ์หรือ 1 มีนาคม) มีความสม่ำเสมอ
- อินพุตไม่ถูกต้อง: ตรวจสอบว่า DOB เป็นวันที่จริงและไม่ใช่วันที่ในอนาคต
ตัวเลือกด่วน: ใช้เครื่องคำนวณอายุออนไลน์
หากคุณเพียงต้องการคำตอบ (หรือคุณต้องการตรวจสอบการใช้งานของคุณ) ใช้เครื่องคิดเลขฟรีของเรา: คำนวณอายุออนไลน์.
คำแนะนำที่เกี่ยวข้อง
คำถามที่พบบ่อย
วิธีคำนวณอายุที่แม่นยำที่สุดคืออะไร
สำหรับกรณีส่วนใหญ่ "ปีที่สำเร็จการศึกษา" (อายุในปีที่ครบบริบูรณ์) คือมาตรฐาน หากคุณต้องการรายละเอียดทั้งหมด ให้คำนวณปีก่อน จากนั้นเดือน จากนั้นวัน และทดสอบ Edge Case เช่น ความยาวเดือนและปีอธิกสุรทิน
เหตุใดบางครั้ง JavaScript จึงให้วันที่ไม่ถูกต้องสำหรับสตริงวันที่
เนื่องจาก new Date('YYYY-MM-DD') สามารถตีความได้ว่าเป็น UTC ในบางสภาพแวดล้อม หากคุณสนใจวันที่ในปฏิทินท้องถิ่น ให้แยกวิเคราะห์ส่วนต่างๆ และใช้ new Date(y, m, d).