A-AA+then

ขอถามหน่อย

1,395
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;
};
จากบทความที่ไ้ด้เขียนมาแล้วคะสงสัยว่า
ถ้าเรามีวันที่ๆได้จากการคิวรี่เพื่อจะส่งไปคะเราจะเอาค่าที่ได้ส่งเข้า function อย่างไร

7 ความคิดเห็น

คือค่าที่ได้จากการคิวรี่ฐานข้อมูลคะ
1

ก็แยกออกสิครับ จะแยกโดย SQL ก็ได้ หรือมาแยกเองด้วย Javascript หรือ PHP ก็ได้ เช่น

<?php
  $date = '30-12-2522';
  list($day, $month, $year) = explode('-', $date);
?>
2

ใช้คำสั่งตัดได้และคะแต่มีปัญหาตรงเอาค่าไปแสดง
ตัวเลขของเดือนทำอย่างไรเราจะให้มันเติม 0ข้างหน้าได้เพราะในserver เป็น 1-12 พอเอาไปคำนวนและมันผิด
ดังภาพ
3

ถ้าคำนวณ ใส่ 0 ข้างหน้าไม่มีผลครับ

ถ้าเอาไปใส่ mysql ใส่ 0 ข้างหน้า หรือไม่ก็ได้

ถ้าแสดงผล ให้มี 0 ด้านหน้า ลองหาบนเว็บดู
4

function ใน php
sprintf("%02d", $number);
5

 Function CalAge(MyDay, MyMonth, MyYear)
        ThisDay = Day(Now()) & "/" & Month(Now()) & "/" & Year(Now())
       
        CalAge = DateDiff("yyyy", MyDay & "/" & MyMonth & "/" & MyYear, ThisDay) - 1 & " ปี " & DateDiff("m", MyDay & "/" & MyMonth & "/" & Year(Now()) - 1, ThisDay) - 1 & " เดือน " & DateDiff("d", MyDay & "/" & Month(Now) -1 & "/" & Year(Now()), ThisDay) - 1 & " วัน"
    End Function


ส่งค่าเข้่า function ทำได้แล้วคะ ขอบคุณมากเยยนะคะ
6

เกิดปัญหานิดหน่อยคะ จาก code

Function CalAge(MyDay, MyMonth, MyYear)
        ThisDay = Day(Now()) & "/" & Month(Now()) & "/" & Year(Now())
       
        CalAge = DateDiff("yyyy", MyDay & "/" & MyMonth & "/" & MyYear, ThisDay) - 1 & " ปี " & DateDiff("m", MyDay & "/" & MyMonth & "/" & Year(Now()) - 1, ThisDay) - 1 & " เดือน " & DateDiff("d", MyDay & "/" & Month(Now) -1 & "/" & Year(Now()), ThisDay) - 1 & " วัน"
    End Function

มันจะมีปัญหาอยู่ว่า ถ้าเดือนนี้
เป็นเดือน 03 ตรง DateDiff("d", MyDay & "/" & Month(Now) -1 & "/" & Year(Now()), ThisDay) - 1 & " Days"
จะเกิด Error ขึ้นเพราะ เดือน ที่ 02 มี แค่ 28 วัน เท่านั้นแต่ค่าที่ส่งมา เป็น 31/เดือน03-1=02/2010
มันหาค่าไม่ได้ ช่วยหน่อยคะจะดักอย่างไร
7
^