คำนวณอายุเป็น ปี เดือน วัน จากวันที่ปัจจุบันและวันเกิด โดยปรับวันที่/เดือนเมื่อวันเกิดมากกว่าวันที่ปัจจุบัน
ตัวอย่าง
ปัจจุบัน: 21/9/2019, เกิด: 25/9/1996 → 22 ปี 11 เดือน 26 วัน
หลักการ
- ถ้าวันเกิด > วันปัจจุบัน: ยืมวันจากเดือนก่อนหน้า (ตามตารางวันในเดือน)
- ถ้าเดือนเกิด > เดือนปัจจุบัน: ยืมเดือนจากปี (บวก 12 เดือน ลบ 1 ปี)
- ลบวัน เดือน ปี ตามลำดับ
โค้ดตัวอย่าง
#include <stdio.h>
#include <stdlib.h>
void age(int pd, int pm, int py, int bd, int bm, int by) {
int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (bd > pd) { pd += month[bm-1]; pm--; }
if (bm > pm) { py--; pm += 12; }
int fd = pd - bd, fm = pm - bm, fy = py - by;
printf("Present Age Years: %d Months: %d Days: %d", fy, fm, fd);
}
int main() {
age(21,9,2019, 25,9,1996);
return 0;
}
ผลลัพธ์
Present Age Years: 22 Months: 11 Days: 26