ขอถามหน่อย
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 อย่างไร
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 อย่างไร
<?php
$date = '30-12-2522';
list($day, $month, $year) = explode('-', $date);
?>
ตัวเลขของเดือนทำอย่างไรเราจะให้มันเติม 0ข้างหน้าได้เพราะในserver เป็น 1-12 พอเอาไปคำนวนและมันผิด
ดังภาพ
ถ้าเอาไปใส่ mysql ใส่ 0 ข้างหน้า หรือไม่ก็ได้
ถ้าแสดงผล ให้มี 0 ด้านหน้า ลองหาบนเว็บดู
sprintf("%02d", $number);
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 ทำได้แล้วคะ ขอบคุณมากเยยนะคะ
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
มันหาค่าไม่ได้ ช่วยหน่อยคะจะดักอย่างไร