คำนวณอายุ แบบไทย (ปี พศ)

การคำนวณอายุด้วย Javascript หรือ การคำนวณความแตกต่างของเวลา เทียบกับวันที่ปัจจุบัน ด้วย Javascript โดยการคำนวณด้วยวันที่แบบไทย (ปี พศ.) ให้ผลลัพท์เป็นอายุ วัน เดือน และ ปี

function calcAge(date, month, year) {
     month = month - 1;
     year = year - 543;

     today = new Date();
     dateStr = today.getDate();
     monthStr = today.getMonth();
     yearStr = today.getFullYear();

     theYear = yearStr - year;
     theMonth = monthStr - month;
     theDate = dateStr - date;

     var days = "";
     if (monthStr == 0 || monthStr == 2 || monthStr == 4 || monthStr == 6 || monthStr == 7 || monthStr == 9 || monthStr == 11) days = 31;
     if (monthStr == 3 || monthStr == 5 || monthStr == 8 || monthStr == 10) days = 30;
     if (monthStr == 1) days = 28;

     inYears = theYear;

     if (month < monthStr && date > dateStr) {
          inYears = parseInt(inYears) + 1;
          inMonths = theMonth - 1;
     };
    
     if (month < monthStr && date <= dateStr) {
          inMonths = theMonth;
     } else if (month == monthStr && (date < dateStr || date == dateStr)) {
          inMonths = 0;
     } else if (month == monthStr && date > dateStr) {
          inMonths = 11;
     } else if (month > monthStr && date <= dateStr) {
          inYears = inYears - 1;
          inMonths = ((12 - -(theMonth)) + 1);
     } else if (month > monthStr && date > dateStr) {
          inMonths = ((12 - -(theMonth)));
     };
    
     if (date < dateStr) {
          inDays = theDate;
     } else if (date == dateStr) {
          inDays = 0;
     } else {
          inYears = inYears - 1;
          inDays = days - (-(theDate));
     };
    
     var result = ['day', 'month', 'year'];
     result.day = inDays;
     result.month = inMonths;
     result.year = inYears;
    
     return result;
};

ตัวอย่าง
var age = calcAge(5, 5, 2552);
alert('อายุ ' + age.year + ' ปี ' + age.month + ' เดือน ' + age.day + ' วัน');
ผู้เขียน goragod โพสต์เมื่อ 05 พ.ค. 2552 เปิดดู 21,883 ป้ายกำกับ Javascript
^